[백준/Python] 2960 에라토스테네스의 체

2.so_j·2023년 7월 31일

문제는 여기

코드

n, k = map(int, input().split())
arr = []

for i in range(2, n+1):
    arr.append(i)

cnt = 0
erase = []

while arr:
    num = arr[0]
    remain = []

    for i in arr:
        if i % num == 0:
            erase.append(i)
            cnt += 1
        else:
            remain.append(i)
    arr = remain

    if k <= cnt:
        break

print(erase[k-1])

기록할 점

  • 조건에 만족하는 숫자들을 지워야하는데, 숫자들을 전부 넣은 arr에서 지우면 반복문을 돌때 문제가 생길 것 같아서 고민을 했었다
  • 이럴 땐 어렵게 생각하지 말고 새로운 배열에 넣어주자

profile
싱글코어 두뇌의 개발자 도전기

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기