[백준/파이썬] 1813번 논리학 교수 풀이

업데이트:



문제 정보


풀이

문제

주어진 수열에서 x라는 수가 정확히 x번 등장하는 경우를 찾고, 가능한 값 중 최댓값을 출력하는 문제입니다. 없으면 -1 또는 0 규칙에 맞게 출력합니다.

코드

m = dict()
input()
for n in map(int, input().split()):
    try:m[n] += 1
    except: m[n] = 1

answer = list(sorted(filter(lambda t: t[0] == t[1], m.items()), key = lambda x:-x[0]))

if answer: print(answer[0][0])
elif 0 in m.keys(): print(-1)
else: print(0)

설명

빈도 딕셔너리를 만들고 값 == 등장횟수를 만족하는 후보를 필터링해 가장 큰 값을 선택합니다.



댓글남기기