목록Computer Science (228)
DHistory
문제 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 """ d[n]: n kg을 가져갈 설탕 봉지의 최소 개수 """ n = int(input()) INF = 10**9 + 1 def solution(n): d = [INF] * (n + 1) for i in range(3, n + 1): if not i % 3: d[i] = min(d[i], i // 3) if not i % 5: d[i] = min(d[i], i // 5) d[i] = min(d[i], d[i - 3] + 1, d[i - 5] + 1) retu..
문제 25644번: 최대 상승 미래를 예측하는 능력이 있는 정균이는 앞으로 $N$일간 ANA 회사의 주가가 어떻게 변하는지 정확히 예측할 수 있다. 정균이는 예측한 결과를 바탕으로 ANA 회사의 주식 한 주를 적당한 시점에 사고 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) INF = 10**9 + 1 stocks = [INF] + list(map(int, sys.stdin.readline().rstrip().split())) def solution(a): d = [0] * len(a) min_value = INF for i in range(1, len(a)): if min_value > a[i - 1]: min_value = ..
문제 19947번: 투자의 귀재 배주형 2020년에 학교로 복학한 주형이는 월세를 마련하기 위해서 군 적금을 깨고 복리 투자를 하려고 한다. 주형이가 하려는 투자에는 3가지 방법의 투자 방식이 있다. 1년마다 5%의 이율을 얻는 투자 ( www.acmicpc.net 풀이 """ A: 1년마다 5%의 이율을 얻는 투자 B: 3년마다 20%의 이율을 얻는 투자 C: 5년마다 35%의 이율을 얻는 투자 투자 방식은 매년 변강할 수 있다. 매년 이율은 소쉄 이하를 버림해서 받는다. 11,111 A: 1년후 555 B: 3년후 2,222 C: 5년후 3,888 C 방식으로 투자 시 4년이 지난 시점이라면 받을 수 있는 이자는 0원 d[n] = n년 후 받을 총액 """ h, y = map(int, input()...
문제 13301번: 타일 장식물 대구 달성공원에 놀러 온 지수는 최근에 새로 만든 타일 장식물을 보게 되었다. 타일 장식물은 정사각형 타일을 붙여 만든 형태였는데, 한 변이 1인 정사각형 타일부터 시작하여 마치 앵무조개 www.acmicpc.net 풀이 """ 피보나치수열 d[n] = d[n - 1] + d[n - 2] 정사각형 2개가 합쳐 다음 정사각형과 동일하다. 80번째 사각형은 81번째 정사각형과 80번째 정사각형으로 이루어져있다. """ n = int(input()) def solution(n): d = [0] * (80 + 2) d[1] = 1 for i in range(2, n + 2): d[i] = d[i - 1] + d[i - 2] return 2 * d[n + 1] + 2 * d[n] ..
문제 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 풀이 """ 피보나치수열 d[n] = d[n - 1] + d[n - 2] """ n = int(input()) def solution(n): d = [0] * (10000 + 1) d[1] = d[2] = 1 for i in range(3, n + 1): d[i] = d[i - 1] + d[i - 2] return d[n] print(solution(n)) 채점 결과
문제 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 풀이 """ d[n]: 돈이 n원일 때 2원 짜리와 5원 짜리로 줄 수 있는 동전의 최소 개수 """ n = int(input()) INF = 987654321 def solution(n): if n == 1: return - 1 d = [INF] * (n + 1) d[2] = 1 for i in range(4, n + 1): if not i % 2: d[i] = min(d[i], i // 2) if not i % 5: d[i] = min(d[i], i // 5) d[i] = min(d[i], min(d[i - 2] + 1, d[i - 5] + 1)) return d[n] if..
문제 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net 풀이 import sys def solution(note1, note2): note1 = sorted(note1) result = [] for target in note2: if binary_search(note1, target, 0, len(note1) - 1) != None: result.append(1) else: result.append(0) return result def binary_search(array, target, start, end): whi..
문제 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 풀이 import sys from collections import Counter n = int(sys.stdin.readline().rstrip()) cards = [] for _ in range(n): cards.append(int(sys.stdin.readline().rstrip())) def solution(cards): return sorted(Counter(cards).items(), key=lambda x: (-x[1], x[0]))[0][..
문제 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 풀이 import sys from collections import Counter n = int(sys.stdin.readline().rstrip()) books = [] for _ in range(n): books.append(sys.stdin.readline().rstrip()) def solution(books): return sorted(Counter(books).items(), key=lambda x: (-x[1], x[0]))[0][0] ..
문제 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 풀이 """ 1. 국어 점수가 감소하는 순서로 2. 국어 점수가 같으면 영어 점수가 증가하는 순서로 3. 국어 / 영어점수가 같으면 수학 점수가 감소하는 순으로 4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 """ import sys n = int(sys.stdin.readline().rstrip()) scores = [] for _ in range(n): input = sys.stdin.readline().rstrip()..