[파이썬] 백준 2668번 숫자고르기
작성:
백준 #2668 숫자고르기
# 출력: 정수들의 개수 -> 뽑힌 정수들을 작은 수부터
# 체크할 조건
# 1 <= N <= 100
# 순서: 값 형식으로 딕셔너리에 저장.
# dict.get(값)을 해서 본인 순서 or None이 나올 때까지 순환
# None이면 continue
# 본인 순서가 나온다면 거쳐간 숫자 모두 dict에서 pop, 저장
import sys
input = sys.stdin.readline
def solution(N):
check = dict()
result = []
for i in range(1, N+1):
num = int(input())
if num == i:
result.append(num)
continue
check[i] = num
if num in check:
target = num
temp = [target]
while not (target == i or target == None):
target = check.get(target)
temp.append(target)
if target == None: continue
else:
for n in temp:
result.append(n)
check.pop(n)
result.sort()
print(len(result))
for num in result:
print(num)
if __name__ == '__main__':
solution(int(input()))
댓글남기기