일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 카카오 코딩테스트
- 독서노트
- 이산신호처리
- backjoon
- 알고리즘문제풀이
- 스위프트
- 코테준비
- PYTHON
- Trie
- 트라이
- 알고리즘
- SWIFTUI
- 신호처리
- DSP
- 백준
- 알고리즘 문제풀이
- SWIFT
- 릿코드
- 프로그래머스
- 파이썬
- 전자공학
- DTFT
- Leet Coding Challenge
- leetcode
- leet code
- IOS
- dft
- 코테
- 컨볼루션
- 코딩테스트
Archives
- Today
- Total
매일 매일 성장하는 섭섭군
[Seop's의 코드풀이] 백준 9020 골드바흐의 추측 - Python 본문
반응형
이번에 풀어볼 문제는 백준 9020번인 골드바흐의 추측이라는 문제입니다.
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/9020
문제를 보면 일단 소수를 구할 수 있어야 한다.
여러가지 테스트케이스가 주어짐으로 필자는 10000까지의 소수를 전부 구한 후에 문제를 풀었다.(사실 이과정만 잘 한다면 문제는 쉽다.)
소수를 구하는 방법으로는 에라토스테네스의 체 라는 방법을 사용했다.
에라토스테네스의 체는 2부터 시작하여 각 해당하는 배수를 지워나가는 것이다.(2를 제외한 2의 배수를 모두 제거)
즉 체 처럼 하나씩 거르는 것인데 어떻게 보면 무식할 수 있으나 컴퓨터의 입장에서는 나름 괜찮은 방법이다. 자세한 내용은 다음과 같다.
소수들을 구했다면 내가 찾고자 하는 짝수어 어떤 소수로 이루어져있는지만 찾으면 된다.
2개 이상의 경우도 찾아야 함으로 필자는 모두 찾아 주었다. 방법은 다음과 같다.
- 내가 찾고자 하는 수(N) - 1 부터 시작해서 N/2 까지 소수인지 확인한다.
- 해당하는 수가 소수이고 N - 해당하하는 수 도 소수이면 정답후보에 추가한다.
- 정답후보들 중 두수의 차가 가장 작은 값이 정답이다.
전체적인 코드는 다음과 같습니다. 질문과 피드백은 언제나 감사합니다.
import sys
input = sys.stdin.readline
def getPrimeNumber() :
answer = dict()
prime = [True for i in range(10001)]
for i in range(2, 10001) :
if prime[i] :
answer[i] = True
for j in range(i*2, 10001, i) :
prime[j] = False
return answer
num = getPrimeNumber()
def soluction() :
n = int(input())
result = []
for i in range(n-1, n//2 - 1, -1) :
if i in num and (n-i) in num :
result.append([i, n-i])
result = sorted(result, key= lambda x: (abs(x[0]- x[1])))
ans = sorted(result[0])
return str(ans[0]) + " " + str(ans[1])
if __name__ == "__main__":
c = int(input())
for _ in range(c) :
print(soluction())
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[Seop's의 코드풀이] 백준 10799 쇠막대기 - Python (0) | 2020.08.02 |
---|---|
[Seop's의 코드풀이] 백준 5397 키로커 - Python (0) | 2020.08.02 |
[Seop's의 코드풀이] 백준 2504 괄호의 값 - Python (0) | 2020.06.23 |
[Seop's의 코드풀이] 백준 6416 트리인가? - Python (0) | 2020.06.15 |
[Seop's의 코드풀이] 백준 3649 로봇 프로젝트 - Python (0) | 2020.06.14 |
Comments