Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 1
- 정규식
- Push
- 수정사항업데이트
- git
- 함수
- amend
- 백준
- GitHub 설치
- boostcamp #aI tech #주간리뷰
- 1330
- git config global
- git commit
- 파이썬
- Baekjoon
- github
- 15596
- local repository 생성
- 두수비교하기
- Restore
- regExr
- commit
- STAGE
- git push
- remote repository 생성
- Reset
- ADD
- python
Archives
- Today
- Total
Très bien
Baekjoon 9020 - 골드바흐의 추측 (Python) 본문
Baekjoon 9020 - 골드바흐의 추측
◎ Problem Definition
9020번: 골드바흐의 추측
1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아
www.acmicpc.net
◎ Implementation
1. Problem Type
- Implementation, math (Silver 1)
#에라토스테네스의 체
2. Problem Analysis
▶ 용어 정의 : 골드바흐 파티션
2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있으며, 짝수를 두 소수의 합으로 나타내는 표현하는 것을 골드바흐 파티션이라고 한다. (10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다.)
▶ 문제 풀이 :
2보다 큰 짝수 n이 주어졌을 때, n의 골드바흐 파티션을 출력하는 프로그램을 작성하시오. 만약 가능한 n의 골드바흐 파티션이 여러 가지인 경우에는 두 소수의 차이가 가장 작은 것을 출력한다.
3. Solution_1 (☆초기 접근)
▶ 완성 코드
에라토스테네스의 체를 이용하여 소수 판단 list(prime_list)를 생성했습니다. prime_list의 값이 1이면 해당 index의 값은 소수입니다. 예를 들어, prime_list [3] = 1 이면, 3은 소수입니다.
골드바흐 파티션의 두 수의 차가 가장 작은 것을 출력해야하기 때문에, 입력된 값(n)을 먼저 2로 나누어 중앙값 x를 찾고, x를 하나씩 증가시키면서 소수 여부를 확인합니다.
x와 n-x 값이 모두 소수이면 출력을 하게 됩니다.
m = 10000
prime_list = [0, 0]+[1]*(m-1)
for i in range(2, int(m**0.5)+1):
for j in range(i+i, m+1, i):
if prime_list[j]:
prime_list[j] = 0
for _ in range(int(input())):
n = int(input())
x = n//2
while prime_list[x] == 0 or prime_list[n-x] == 0:
x += 1
print(n-x, x)
▶ 성능
- Memory : 30864 KB
- Time : 508 msec
◎ Results
- 에라토스테네스의 체를 사용하여 소수를 구하고 최소의 차를 보이는 골드바흐 파티션을 구하는 재미있는 문제였습니다. 풀이는 했지만, 여전히 수행 시간 500msec 이상은 너무 많습니다. 어디서 줄일 수 있는지 더 고민이 필요합니다.
'Coding > Algorithm' 카테고리의 다른 글
프린터 큐 (0) | 2022.06.25 |
---|---|
Baekjoon 2606 - 바이러스 (Python) (0) | 2022.02.25 |
BAEKJOON 11653 - 소인수분해 (0) | 2022.02.20 |
BAEKJOON 1978 - 소수 찾기 (0) | 2022.02.17 |
SWEA 4112 - 이상한 피라미드 탐험 (0) | 2022.02.04 |
Comments