평범한 필기장

[BOJ_Python] 2960_에라토스테네스의 체 본문

코딩 테스트 준비/BOJ

[BOJ_Python] 2960_에라토스테네스의 체

junseok-rh 2023. 3. 15. 17:46

https://www.acmicpc.net/problem/2960

 

2960번: 에라토스테네스의 체

2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다.

www.acmicpc.net

어떻게 풀었는가

  • N까지의 수에서 소수이면 그 소수와 그 소수의 배수(N보다 작은)를 리스트에 다 넣었다. 그리고 이 리스트의 길이가 k와 같아 질때 까지 반복 하였다. 그럼 그 리스트의 마지막 원소가 답이 된다.
  • 처음에 이 방식에서 중복해서 들어가는 것을 생각안하고 했다가 틀려서 이미 리스트에 들어있는지를 체크하는 부분을 추가했다.

코드

n, k = map(int, input().split())
lst = []
for i in range(2, n + 1):
    lst.append(i)

def od(a):
    if a == 1:
        return 0
    else:
        for i in range(2, a):
            if a % i == 0:
                return 0
        return 1

od_lst = []
for i in range(1, n+1):
    if od(i) == 1:
        iter = n // i
        for j in range(1, iter + 1):
            if i * j not in od_lst:
                od_lst.append(i * j)
            if len(od_lst) == k:
                break
        if len(od_lst) == k:
            print(od_lst.pop())
            break

혹시 틀린 부분이나 수정해야할 부분이 잇다면 알려주시면 감사하겠습니다!!