반응형

분류 전체보기 268

[파이썬, Python] 백준 11653: 소인수분해

문제 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 코드 n = int(input()) if n == 1: print('') for i in range(2, n+1): if n % i == 0: while n % i == 0: print(i) n = n/i 설명 우선 n을 입력받아주고, n이 1이라면 아무것도 출력하지 않는다. 이외의 케이스는 반복문을 진행해서 해결하는데, 만약 n이 i로 나누어진다면, 각 문장의 i를 출력하고, i로 나누어지는 만큼 나누어준다.(72의 경우 2로 3번까지 나누어지므로 3번 반복) 더 이상 나누어지지 않을 때까지 반복한다.

[파이썬, Python] 백준 2581: 소수

문제 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 코드 m = int(input()) n = int(input()) num_list = [] for i in range(m,n+1): cnt = 0 if(i==1): continue for j in range(2, i+1): if(i%j == 0): cnt += 1 if cnt == 1: num_list.append(i) if len(num_list) == 0: print(-1) else: print(s..

[파이썬, Python] 백준 1978: 소수 찾기

문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 코드 n = int(input()) num = map(int, input().split()) result = 0 for i in num: cnt = 0 if(i==1): continue for j in range(2, i+1): if(i%j == 0): cnt += 1 if cnt == 1: result += 1 print(result) 설명 소수를 판별하는 방법 중 하나는 '에라토스테네스의 체'라는 것을 이용하는 것인데, 위의 코드는 그것을 이용해보지 않았던..

[파이썬, Python] 백준 2839: 설탕 배달

문제 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 코드 n = int(input()) cnt = 0 while n >= 0: if n%5 == 0: cnt += (n//5) print(cnt) break n -= 3 cnt += 1 else: print(-1) 설명 최소 개수로 배달을 하기 위해서는 5킬로짜리가 많을수록 좋다. 그러므로 만약 남은 무게가 5로 나누어진다면 최대한 사용을 해주어야 한다. 따라서 만약 n이 5로 나누어 떨어지면, 5로 나누..

[파이썬, Python] 백준 2775: 부녀회장이 될테야

문제 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 코드 t = int(input()) for _ in range(t): k = int(input()) n = int(input()) people = [i for i in range(1, n+1)] for _ in range(k): for x in range(1, n): people[x] += people[x-1] print(people[-1]) 설명 문제가 직관적으로 이해하기 어려웠는데 그림을 그려서 생각하니까 조금 편했다. 0층에는..

[파이썬, Python] 백준 10250: ACM 호텔

문제 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 코드 import math n = int(input()) for i in range(n): h, w, n = map(int, input().split()) if n > h * w: print("error") break if n % h != 0: floor = n % h else: floor = h hotel_num = math.ceil(n / h) print(floor*100 +..

[파이썬, Python] 백준 2869: 달팽이는 올라가고 싶다

문제 https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) www.acmicpc.net 코드 시간 초과 코드 import sys a, b, v= map(int, sys.stdin.readline().split()) n = 1 while True: if (a*n - (b*(n-1))) < v: n += 1 else: break print(n) 정답 코드 a, b, v= map(int, input().split()) days = (v-b)/(a-b) print(int(days) if days == int(days) else int(days..

[파이썬, Python] 백준 1193: 분수찾기

문제 https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 코드 import sys input = sys.stdin.readline x = int(input()) line = 0 max_num = 0 while x > max_num: line += 1 max_num += line gap = max_num - x if line%2 == 0: top = line - gap bot = gap + 1 else: top = gap + 1 bot = line - gap print('%d/%d'%(top,bot)) 설명 홀수 라인과 짝수 라인의 규칙과 x에 따른 라인의 규칙을 찾으면 해결이 가..

[파이썬, Python] 백준 2292: 벌집

문제 https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 코드 n = int(input()) house = 1 cnt = 1 while n > house: house += 6*cnt cnt += 1 print(cnt) 설명 규칙을 찾으면 간단하게 해결되는 문제인데 처음에 규칙이 안보여서 못 풀었던 문제다. 처음의 1을 기준으로 6칸이 늘어나고 늘어난 칸을 기준으로 6칸이 더 늘어난다. 즉 층마다 6칸씩 늘어나는 규칙을 가지고 있다. 각 층의 방을 카운트 하..

반응형