본문 바로가기
알고리즘 문제/Leetcode

[leetcode][1207] Unique Number of Occurrences

by 햄과함께 2019. 10. 2.
320x100

문제 : https://leetcode.com/problems/unique-number-of-occurrences/


set, map을 사용.

arr 배열을 탐색하면서 set에 arr[i]들을 저장한다.

map은 arr[i]이 나온횟수를 저장하는 cnt, cnt의 value가 나온 횟수를 저장하는 num. 총 2개의 map을 준비한다.

즉, arr = { 1, 2, 2, 1, 1, 3, 2 } 이라면 

cnt = { (1, 3), (2, 3), (3, 1) }

num = { (1,1), (3, 2) }

이 된다.

arr 배열을 탐색하면서 map1, map2개를 세팅한다.

그리고 num[i] = 1 이 되는 모든 i의 개수(uniqueNumCnt)를 구한다.

위 예제에서는 1이 된다.

 

만약 uniqueNumCnt이 set의 크기와 같다면 true, 다르다면 false가 된다.

시간복잡도는 O(NlogN). N은 |arr|이다.


소스코드 : https://github.com/fpdjsns/Algorithm/blob/master/leetcode/1207.%20Unique%20Number%20of%20Occurrences.cpp

320x100

댓글