백준/python
-
[Bronze1] 백준 11653 파이썬 : 소인수분해백준/python 2023. 6. 5. 15:10
아이디어 2부터 n까지 쭉 나누되 나누어진 수가 있으면 다시 2부터 나눈다 문제풀이 n = int(input()) if n != 1: for i in range(2, n+1): while n % i == 0: print(i) n = n // i n이 1이 아닐 경우에만 2부터 정수n까지를 범위로 하는 반복문에서 n이 i로 나눠진다면 (n % i == 0) 소인수인 i 값을 출력하고 n을 i로 나누어진 값을 다시 i로 나누어 더 나눠 떨어질수 있는지 확인한 다음, 더이상 나눠지지 않을 경우에만 다음 수로 넘어간다 소스코드 n = int(input()) if n != 1: for i in range(2, n+1): while n % i == 0: print(i) n = n // i
-
[Bronze2] 백준 2581 파이썬 : 소수백준/python 2023. 6. 5. 14:23
백준 2581번 문제풀이 파이썬 문제 자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다. 입력 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다. 출력 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 아이디어 범..
-
[Bronze2] 백준 1978 파이썬 : 소수 찾기백준/python 2023. 6. 5. 13:48
백준 1978번 파이썬 문제풀이 아이디어 소수는 약수가 1과 자신밖에 없는 수 이므로, 이외의 다른 수로 나누어지는지 확인한다. 나누어지 않는 경우에 해당하는 수인지 확인한만큼 카운트하여 출력한다 문제풀이 n = int(input()) decimal = list(map(int, (input().split()))) count = 0 for x in decimal: for i in range(2, x+1): if x % i == 0: if x == i: count += 1 break print(count) 문제를 풀기 전에 우선 1은 소수가 아니라는 점을 유의하자 참고로 1은 1과 자기 자신(1)으로만 나눠떨어지긴 하지만, 곱셈의 역수가 있는 1을 소수로 인정하면 소인수분해의 유일성이 사라지는 등의 문제로 ..
-
[Bronze1] 백준 9506 파이썬 : 약수들의 합백준/python 2023. 6. 1. 18:10
백준 9506번 파이썬 문제풀이 아이디어 약수들을 담을 빈 리스트를 만들고 반복문을 통해 리스트에 약수를 담은다음, 약수들의 합이 n과 같은지 확인한다. 문제풀이 while True: n = int(input()) if n == -1: break divisor = [] for i in range(1, n): if n % i == 0: divisor.append(i) if sum(divisor) == n: print(n, "=", end=" ") print(*divisor, sep=" + ") else: print(f'{n} is NOT perfect.') -1이 입력될때 까지 계속 입력이 들어오므로 while True 문을 활용 (-1이 입력될때까지 반복, -1이 들어오면 종료) if n == -1:, ..
-
[Bronze3] 백준 2501 파이썬 : 약수 구하기백준/python 2023. 6. 1. 17:21
아이디어 약수를 담을 빈 리스트를 만들고, 반복문을 사용해 N의 약수를 빈 리스트에 순서대로 넣은다음, 리스트에서 K를 인덱싱하면 되겠다! 문제풀이 N, K = map(int, input().split()) divisor = [] for i in range(1, N+1): if N % i == 0: divisor.append(i) if len(divisor) < K : print(0) else: print(divisor[K-1]) 자연수 N, K 를 입력받고 divisor(약수) 라는 임의의 빈 리스트를 생성 반복문을 사용해 N의 약수를 divisor 리스트에 추가 K가 리스트에 담긴 약수의 개수보다 많을때는 0 출력 이외의 경우에는 K번째의 약수를 출력(리스트 인덱싱은 0부터 시작하므로 divisor[..
-
[Bronze1] 백준 2869 파이썬 : 달팽이는 올라가고 싶다백준/python 2023. 5. 1. 18:37
아이디어 올라가는 높이인 A에서 내려가는 높이 B를 빼면 하루동안 올라가는 높이(C)가 나온다. 이 높이(C)를 반복(곱셈) 하면 정상인 V와 같거나 커지는지 확인하기. 문제풀이 import sys input = sys.stdin.readline A, B, V = map(int, input().split()) high = A - B high2 = A - B day = 1 while high < V: high += high2 day += 1 print(f'high: {high}') print(f'day:{day}') 예제와 다른 결과가 나왔다. 이유를 생각해보니, 낮에 정상에 도착하면 미끄러지지 않는다는 사실을 망각하고 작성한 코드였다. 수정... import sys input = sys.stdin.rea..
-
[Silver5] 백준 1193 파이썬 : 분수찾기백준/python 2023. 2. 9. 20:18
아이디어 분수를 좌표값이라고 생각했을때 배열은 (y , x) 로 이루어져 있다. X값이 지그재그로 한칸씩 움직일때마다 생기는 분수의 값 변화에서 규칙성을 찾아 풀기로 했다. import sys input = sys.stdin.readline n = int(input()) - 1 x = 1 y = 1 x_count = 1 y_count = 1 for i in range(1, n+1): if x_count == x and y_count == y: x_count += 1 y_count += 1 x += 1 elif x_count != x and y_count != y: x -= 1 y += 1 if y_count == y and x_count == x: x_count += 1 y_count += 1 y += ..
-
[Silver5] 백준 1193 파이썬 : 분수찾기 (오답)백준/python 2022. 12. 26. 18:04
문제를 잘못 읽고 이상하게 풀었다 일단 오답이지만 풀긴 했으니까.. 기록은 남긴다.... 아이디어 배열안에 적힌 값들이 분수로 표현되어 있지만 좌표값으로 생각하고 풀었다. (분자를 y, 분모를 x) 분수들은 다음과 같이 우측으로 출발해서 지그재그 순서로 이동하는데 x 좌표 값은 1 -> 2 -> 4 -> 7 -> 11 -> 16 .... +1로 시작해 1씩 더해지고 있고 y 좌표 값은 1 -> 3 -> 6 -> 10 -> 15 -> 21 ... +2로 시작해 1씩 더해지고 있다 구해야 하는 분수값인 'X'는 y좌표/x좌표 이므로 이 규칙을 이용해 좌표값(분수)을 구할 수 있어보인다. 문제풀이 import sys input = sys.stdin.readline n = int(input()) count = ..