코딩일지/python 백준 알고리즘 81

python 백준 알고리즘 10870번: 피보나치 수 5

https://www.acmicpc.net/problem/10870 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 재귀함수를 이용해 피보나치 수를 구하는 로직을 구하는 간단한 문제 def fibonacci(n): if n

python 백준 알고리즘 10872번: 팩토리얼

https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net ** N = 0일때 출력이 1 기본 팩토리얼 재귀 함수는 # Factorial(N) = N*Factorial(N-1) # ... # Factorial(1) = 1 N이 1일때 리턴값 만들기 def factorial(n): if n == 1: return 1 return n * factorial(n - 1) 여기서 n == 0:으로 바꿔주면 입력이 0일시 출력 1이면서 n이 1일 경우에도 입력값 1로 정상작동한다. def factorial(n): if n == 0: return 1 return n * ..

python 백준 알고리즘 9020번: 골드바흐의 추측

https://www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 일단 소수를 구하는 함수를 만들어놓고 두 소수의 차이가 가장 작은것을 출력해야하니 a, b를 각각 num // 2 으로 중간점부터 비교하는 식으로 구상해보았다. 내 제출 from math import sqrt def prime(n): # 소수 구하기 함수 if n == 1: return False for i in range(2, int(sqrt(n)) + 1): if n % i..

python 백준 알고리즘 4948번: 베르트랑 공준

https://www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net n부터 2n까지의 소수 구하기 이번엔 제곱근을 이용하여 소수를 구해도 시간초과에 걸린다;; 문제에서 주어진 범위 내 소수를 먼저 구한 뒤 리스트를 대조하는 형식으로 문제 해결 덤으로 제곱근을 구하는데 파이썬 math 라이브러리를 import 하여 안에 정의된 sqrt 함수를 이용했다. from math import sqrt def prime(n): # 소수 구하기 if n == 1: ret..

python 백준 알고리즘 1929번: 소수 구하기

https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 이전에 구했던 대로 소수 찾는 알고리즘을 사용했을 시에 시간초과가 뜨게 된다 num1, num2 = map(int, input().split()) for i in range(num1, num2 + 1): if i == 1: # 1은 소수가 아니므로 제외 continue for j in range(2, i): # 2부터 i-1까지 if i % j==0: # 나누어 떨어지는 수가 있다면 break break else: print(i..

python 백준 알고리즘 11653번: 소인수분해

https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 2부터 시작해서 해당 숫자로 나눌 수 없을때까지 나누고 다음숫자를 넣는 방식으로 구상 n = int(input()) for i in range(2, n+1): # 2부터 하나씩 나눠보기 if n % i == 0: while n % i == 0: # 해당 숫자로 나눌 수 없을 때까지 나누기 print(i) n = n / i i에 +1 해주면서 반복문을 돌리는 식으로 깔끔하게 구상했다. 내 제출 n = int(input()) i = 2 while n != 1: # n이 1 이상일때 if n % i == 0: # 더 나눌..

python 백준 알고리즘 2581번: 소수

https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 1978번 문제의 소수 찾기 매커니즘을 그대로 가져와서 적용, 리스트 안에 append 하는식으로 소수 리스트 작성. 소수 리스트에 하나라도 있다면 sum(소수리스트), min(소수리스트) 로 합과 최솟값 출력 없다면(else) -1 출력 내 제출 num1 = int(input()) num2 = int(input()) cnt = [] for num in range(num1, num2 + 1): # num1부..

python 백준 알고리즘 1978번: 소수 찾기

https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수는 1과 자기 자신으로만 나누어 떨어지는 수 2~(자기자신-1)까지 반복문으로 나눠서 몫이 0으로 나누어 떨어지면 소수가 아니다 (error+1) error == 0 인 수들 카운트 내 제출 n = int(input()) nums = map(int, input().split()) cnt = 0 for num in nums: error = 0 if num > 1: # 1보다 큰 수부터 for i in range(2, num): # 2부터 num-1까지 if num..

python 백준 알고리즘 10757번: 큰 수 A+B

https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 내 제출 A, B = map(int, input().split()) print(A+B) 파이썬용 문제는 아니였던것 같다. 찾아보니 C언어의 경우 숫자가 지나치게 클 경우 메모리에 담지 못하고 에러를 출력한다고 합니다 ㅋㅋ

python 백준 알고리즘 2839번: 설탕 배달

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 5킬로그램 봉지 x개 + 3킬로그램 봉지 y개 / x+y가 최소 -> 5로 먼저 나누고 이후에 3으로 나누기 -> 5의 배수로 나눠질때까지 3kg봉지 빼기 내 제출 num = int(input()) count = 0 while num >= 0: if num % 5 == 0: count += int(num // 5) # 5로 나눠버리기 print(count) break num -= 3 # 5의 배수가 될때까지..