Skip to content

1207. Unique Number of Occurrences

개요

integer 배열이 주어졌을 때, 각 item들의 종류와, 개수가 unique할 경우 true 그렇지 않으면 false를 반환해야 한다.

이게 무슨이야긴가 하면 item이 1,2,3으로 이루어진 배열 arr이 다음과 같이 구성되어 있다고 가정하자.

arr = [1,2,2,3,2,3]

이 때, arr은 [1,2,3]으로 구성되어있으며 각 item의 개수는 1:1, 2:3, 3:2로 구성되어 있고, 각 item의 개수가 고유하므로 ture를 반환하게 된다.

반면에 arr가 [1,1,2,2,3]으로 구성되어 있다면 각 item의 개수가 1:2, 2:2, 3:1 이므로 1의 개수와 2의 개수가 곂쳐 item의 종류와 고유 개수가 일치하지 않으므로 false를 반환한다.

해결 전략

hash-table을 이용하여, arr가 가지고 있는 item의 종류와 각 개수를 저장하고, 키와, 값으로 분리된 list를 반환하여 값인 list를 set으로 변환시켜 키의 list와 비교하면 된다.

python에는 Counter 자료형이 있으므로 이를 이용하면 키:[키의 개수]형태의 hash-table을 쉽게 얻을 수 있다.

from collections import Counter
table = Counter(arr)

table에서 key와 value를 분리한 후 value를 set으로 변환한 후 각 값을 비교한다.

return len(table.keys()) == len(set(table.values()))

Comments