본문 바로가기

전체 글79

백준 11653 - 소인수분해 (Python) 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 코드 n = int(input()) for i in range(2, n+1): while n % i == 0: print(i) n /= i 풀이 소인수분해 결과를 오름차순으로 출력하기 때문에, 2부터 시작해서 n이 나누어떨어지는 수 i를 찾는다. 나누어 떨어지면 n을 i로 나눈다. 인수는 중복될 수 있으므로 더이상 i로 나누어떨어지지 않으면 다음 수로 넘어가서 똑같이 반복한다. 2022. 5. 10.
백준 2581 - 소수 (Python) 문제 자연수 M, N이 주어질 때 M 이상 N 이하의 자연수 중 소수의 합과 최솟값을 구하라. 코드 m = int(input()) n = int(input()) sum = 0 prime_numbers = [] for num in range(m, n+1): if num == 2: sum += num prime_numbers.append(num) else: for i in range(2, num): if num % i == 0: break if i == num-1: sum += num prime_numbers.append(num) if(prime_numbers): print(sum) print(min(prime_numbers)) else: print(-1) 풀이 1) M부터 N까지 자연수를 반복한다. 2) .. 2022. 5. 9.
백준 1978 - 소수 찾기 (Python) 문제 주어진 N개의 수 중 소수의 수 출력하기 N 2022. 5. 9.
백준 2839 - 설탕 배달 (Python) 문제 n kg설탕을 3kg/5kg 봉지에 각각 나눠 담는다. 이때 봉지의 개수가 최소가 되는 경우를 구해야 한다. 설탕이 정확히 나누어떨어지지 않는다면 -1을 출력한다. 코드 n = int(input()) # a: 3kg 봉지 개수 # b: 5kg 봉지 개수 b = n//5 a = n-b*5 while (True): if b == 0 or a % 3 == 0: break b -= 1 a = n-b*5 a = a//3 if a*3+b*5 == n: print(a+b) else: print(-1) 풀이 3kg 봉지보다 5kg봉지에 많이 담아야 당연히 봉지의 수가 더 적을 것이다. 그래서 설탕 총 무게를 5kg로 나누었을 때 몫을 구하고, 그 나머지가 3kg로 나누어떨어지는 경우를 구한다. 나누어떨어지지 않는.. 2022. 5. 8.
백준 2775 - 부녀회장이 될테야 (Python) 코드 t = int(input()) for _ in range(t): floor = int(input()) # 층수 num = int(input()) # 호수 floor_0 = [x for x in range(1, num+1)] # 0층 for k in range(floor): for i in range(1, num): floor_0[i] += floor_0[i-1] print(floor_0) print(floor_0[-1])​ 풀이 3층 1 5 15 35 70 2층 1 4 10 20 35 1층 1 3 6 10 15 0층 1 2 3 4 5 아파트의 층/호수별 거주민 수는 위 표와 같다. k층 n호에 사는 거주민의 수는 k-1층의 1,2,3,...,n호에 사는 거주민의 총 합과 같다. 주어진 정보는 0층에.. 2022. 5. 8.
백준 10250 - ACM 호텔 (Python) 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모.. 2022. 5. 8.
백준 2869 - 달팽이는 올라가고 싶다 (Python) 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 시간제한: 0.15초 풀이 # V: 나무막대 높이 # A: 낮에 올라가는 높이 # B: 밤에 미끄러지는 높이 a, b, v = map(int, input().split()) print((v-b-.. 2022. 5. 7.
백준 1193 - 분수찾기 (Python) 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 풀이 n = int(input()) sum = 0 i = 1 while(True): sum += i if sum >= n: break .. 2022. 5. 5.