-
[백준] 2668번_숫자고르기Study/알고리즘 2020. 1. 22. 12:46
문제 링크 : https://www.acmicpc.net/problem/2668
2668번: 숫자고르기
세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절히 뽑으면, 그 뽑힌 정수들이 이루는 집합과, 뽑힌 정수들의 바로 밑의 둘째 줄에 들어있는 정수들이 이루는 집합이 일치한다. 이러한 조건을 만족시키도록 정수들을 뽑되, 최대로 많이 뽑는 방법을 찾는 프로그램을 작성하시오. 예를 들어, N=7인 경우 아래
www.acmicpc.net
n = int(input()) dic = {} for i in range(n): dic[i+1] = int(input()) while True: baseSet = set(dic.values()) dic = {key:value for key, value in dic.items() if key in baseSet} if baseSet == set(dic.values()): break print(len(dic)) for key in dic.keys(): print(key)
딕셔너리를 이용해 풀어봤다.
'Study > 알고리즘' 카테고리의 다른 글
[백준] 2798번_블랙잭 (0) 2020.01.28 [백준] 13458번_시험감독 (0) 2020.01.24 [백준] 1652번_누울자리를찾아라 (0) 2020.01.21 [백준] 1759번_암호만들기 (0) 2020.01.17 [백준] 6359번_만취한상범 (0) 2020.01.17