https://github.com/Dev-Guccin
Guccin
https://github.com/Dev-Guccin
전체 방문자
오늘
어제
  • 분류 전체보기 (172)
    • 알고리즘 (140)
    • 삽질방지 (13)
    • SystemHacking (1)
    • 일상 (4)
    • 개발 (8)
    • 스프링 부트 REST API 개발일지 (5)
    • JPA (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 다익스트라
  • DFS
  • 큐
  • 백트래킹
  • DP
  • 재귀
  • 파이썬
  • 12015
  • 프로그래머스
  • 유클리드호제법
  • 이분 탐색
  • 이분탐색
  • Python
  • MST
  • heapq
  • 스택
  • 그래프
  • python3
  • 최단경로
  • 다이나믹 프로그래밍
  • LIS
  • 백준
  • 유니온 파인드
  • 그리디
  • 재귀함수
  • 최소힙
  • counter
  • 다이나믹프로그래밍
  • 최대공약수
  • BFS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
https://github.com/Dev-Guccin

Guccin

알고리즘

백준 9020 풀이 (골드바흐의 추측 )

2021. 2. 8. 20:55

이번에는 "골드바흐의 추측"이라고 한다. 솔직히 난 문과출신이라 이런거 정의 보면 살짝 불편하다ㅋㅋㅋㅋ

그래도 정의가 어렵지는 않다.

큰 짝수는 반드시 두 소수로 나타낼 수 있다는 소리다. 그래서 N값에 대해서 두 소수를 구하면된다.

단, 두 소수의 차이가 가장 작아야한다. 그래서 시나리오를 짜봤다.

 

1. 소수리스트를 먼저 구한다.("에라토스테네스의 체"를 활용한다. 저번 포스팅에 이런방식으로 푸는 고수들이 있길래 따라했다.)

2. 짝수는 나누었을때 소수를 바로 가질수도 있고 하나씩 줄여가며 구해야할수도 있다.

3. 빼고자 하는 수가 소수인지, 뺀후에도 소수인지 판별한다.

4. 둘다 소수이면 출력

여기서 포인트는 빼고자 하는 수를 N/2부터 비교해서 빼기 시작한다는 것이다. line 13

def isPrime(num):
    for i in range(2, int(num**0.5)+1):
        if num % i == 0:
            return 0
    return 1*(num!=1)

tmp = []
for i in range(2,10000):
    if  isPrime(i):
        tmp.append(i)
case = int(input())
for _ in range(case):
    n = int(input())
    for i in range(int(n/2),1,-1):
        if i in tmp:
            if (n - i) in tmp:
                print(str(i) + " " + str(n-i))
                break

 

'알고리즘' 카테고리의 다른 글

백준 10872 풀이 (재귀함수, 팩토리얼)  (0) 2021.02.10
#3 알고리즘 공부 2/8 리뷰  (0) 2021.02.08
백준 4948 풀이 (python3 시간초과)  (0) 2021.02.08
백준 1929 풀이 (에라토스테네스의 체)  (0) 2021.02.08
백준 2775 풀이  (0) 2021.02.07
    '알고리즘' 카테고리의 다른 글
    • 백준 10872 풀이 (재귀함수, 팩토리얼)
    • #3 알고리즘 공부 2/8 리뷰
    • 백준 4948 풀이 (python3 시간초과)
    • 백준 1929 풀이 (에라토스테네스의 체)
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin
    https://github.com/Dev-Guccin

    티스토리툴바