백준
-
[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[..
-
[Bronze3] 백준 5086 파이썬 : 배수와 약수백준 2023. 6. 1. 16:34
아이디어 간단하게 배수를 약수로 나누면 나머지가 0인 점을 이용해서 풀이하면 될 것 같다 문제풀이 a, b = map(int, input().split()) if b % a == 0: print("factor") elif a % b == 0: print("multiple") else: print("neither") 뭔가 놓친게 있다... 반복해서 케이스가 입력되는 부분, 0이 입력되는 부분을 놓쳤다. 테스트 케이스로 자연수가 주어지지만 마지막에 두 수에 0이 대입된다는 점을 고려해 다시 작성하기로 했다. while True: a, b = map(int, input().split()) if a == 0 and b == 0: break if b % a == 0: print("factor") elif a % ..
-
[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 += ..