본문 바로가기

분류 전체보기55

백준 1010번 : 다리 놓기 (Python) 출처 : https://www.acmicpc.net/problem/1010 t = int(input()) for i in range(t) : n, m = map(int, input().split()) n1 = 1 m1 = 1 for i in range(1, n+1) : n1 = n1 * i for j in range(m-n+1, m+1) : m1 = m1 * j print(int(m1/n1)) 복잡하게 생각할 필요 없이 오른쪽 m개의 사이트 중 n개의 다리를 선택하면 된다. 어떻게 선택되든 왼쪽과 오른쪽의 사이트는 제일 위에서부터 순서대로 다리가 놓인다. 파이썬에서는 조합을 구하는 함수가 따로 없기 때문에 분자에는 (m - n + 1) 부터 m까지 곱한 값을, 분모에는 1부터 n까지 곱한 값을 구해서 계.. 2022. 10. 19.
백준 1978번 : 소수 찾기 (Python) 출처 : https://www.acmicpc.net/problem/1978 n = int(input()) nums = list(map(int, input().split())) prime = 0 for i in nums : prime_j = 1 # 특정 숫자가 소수인지 표시하는 변수 root_i = int(i**(1/2)) + 1 for j in range(2, root_i) : # 2부터 제곱근까지 차례로 나눠서 if i % j == 0 : # 소수가 아니면 prime_j = 0을 넣어서 소수가 아님을 체크 prime_j = 0 break prime += prime_j # 소수임이 확인되면 prime 값에 1을 더해줌 print(prime - nums.count(1)) # 1은 소수로 계산되므로 1의 개.. 2022. 10. 17.
백준 10250번 : ACM호텔 (Python) 출처 : https://www.acmicpc.net/problem/10250 t = int(input()) for i in range(t) : h, w, n = map(int, input().split()) y = n % h x = n // h + 1 if y == 0 : y = h x = n // h print(f"{y * 100 + x}") 예시로 주어진 h = 6, w = 12, n = 10 의 경우를 보자. 가장 왼쪽 라인의 아래층부터 방을 배정하므로 10번째 손님은 가장 왼쪽 라인(X01호)에 앞선 6명의 손님을 배치한 후 4층의 2호실(= 402호)에 배정된다. 즉, n을 h로 나누었을때 그 나머지는 방의 층수와, 몫은 해당 층의 호실과 관련이 있음을 알 수 있다. 2022. 10. 14.
백준 2869번 : 달팽이는 올라가고 싶다 (Python) 출처 : https://www.acmicpc.net/problem/2869 import math a, b, v = map(int, input().split()) x = v - a d = math.ceil(x / (a - b)) print(d + 1) 낮에 2미터(=a) 올라가고 밤에 1미터(=b) 미끄러지는 달팽이가 5미터(=v)의 막대를 올라가는 경우를 가정해보자. 마지막 낮 이전에 3미터(v - a = x) 이상 올라간 상태라면, 낮 동안 2미터를 올라가 정상에 도달할 수 있다. 하루의 낮과 밤에는 1미터(a - b)를 올라가기 때문에 3일(x/(a - b)) + 1일 = 총 4일이면 정상에 도착한다. 다음으로 a = 5, b = 2, v = 10 인 경우를 가정해보자. 마지막 낮 이전에 5미터 이상.. 2022. 10. 11.