📖 question https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net ✍️ answer a, b, c = map(int, input().split()) if b >= c: print(-1) else: n = a/(c-b) + 1 print(int(n))
📖 question https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net ✍️ answer def isPrime(x): if x == 1: return False for i in range(2, int(x**0.5)+1): if x % i == 0: return False return True prime_list = [] for i in range(2, 246912): # 마지막 소수 if isPrime(i) is True: prime_lis..
📖 question https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net ✍️ answer n = int(input()) result = 1 count = 0 for i in range(1, n+1): result *= i result = str(result) for j in reversed(result): if j == '0': count += 1 else: break print(count)
📖 question https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net ✍️ answer dwarf = [] for i in range(9): dwarf.append(int(input())) # 한 줄로 가능: dwarf = [int(input()) for _ in range(n)] for i in range(8): # ([0]+[1]) ([0]+[2]) ([0]+[3]) ... ([7]+[8]) for j in range(i+1, 9): if sum(dw..
📖 question https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net ✍️ answer n = int(input()) dp = [0]*1001 dp[1] = 1 dp[2] = 3 # n=1 1가지 | # n=2 3가지 || = ㅁ # n=3 5가지 ||| =| ㅁ| |= |ㅁ # n=4 11가지 (3에서 |가 오른쪽에 붙어서 5개 + 왼쪽에 붙어서 2개 + ㅁㅁ == ㅁ= =ㅁ) # 일반화: n-1+(n-2)*2 for i in range(3, 1001): dp[i] = dp..
📖 question https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net ✍️ answer n = int(input()) dp = [0] * 1001 # n은 1~1000까지의 수 dp[1] = 1 # n=1일 때, 1가지 dp[2] = 2 # n=2일 때, 2가지 for i in range(3, 1001): dp[i] = dp[i-1] + dp[i-2] # n=3부터는 (n-1)+(n-2)로 일반화할 수 있음 print(dp[n] % 10007)
📖 question https://www.acmicpc.net/problem/1924 1924번: 2007년 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. www.acmicpc.net ✍️ answer # 나의 풀이 x, y = map(int, input().split()) for i in range(1, x): if i in [1, 3, 5, 7, 8, 10, 12]: y += 31 elif i in [4, 6, 9, 11]: y += 30 elif i in [2]: y += 28 if y % 7 == 1: prin..
📖 question https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net ✍️ answer # 나의 풀이 m = int(input()) n = int(input()) list = [] for i in range(m, n+1): for j in range(2, i): if i % j == 0: # 한번이라도 걸리면 소수가 아님 break else: list.append(i) if 1 in list: # 1 제외하기 list.remove(1) if not list..