1207. Unique Number of Occurrences
Given an array of integers arr
, return true
if the number of occurrences of each value in the array is unique, or false
otherwise.
Example 1:
Input: arr = [1,2,2,1,1,3]
Output: true
Explanation: The value 1 has 3 occurrences, 2 has 2 and 3 has 1. No two values have the same number of occurrences.
Example 2:
Input: arr = [1,2]
Output: false
Example 3:
Input: arr = [-3,0,1,-3,1,1,1,-3,10,0]
Output: true
Constraints:
1 <= arr.length <= 1000
-1000 <= arr[i] <= 1000
정수를 원소로 갖는 배열 arr
이 주어진다.
주어진 배열 arr
의 각 원소의 등장 횟수가 unique하다면 true
를, 그렇지 않다면 false
를 리턴한다.
예제 1번을 보자. arr = [1,2,2,1,1,3]
이라는 배열이 주어지고, 각 원소의 등장 횟수가 유니크한지 판별해야 한다.
값을 세보면 다음과 같다.
unique
하기에 true
를 리턴한다.예제 2번도 봐보자.
arr = [1,2]
가 주어진다. 하지만, 1의 등장 횟수는 1, 2의 등장 횟수 또한 1로 등장 횟수가 unique 하지 않음
을 알 수 있다. 따라서, false
를 리턴한다
class Solution:
def uniqueOccurrences(self, arr: List[int]) -> bool:
return len(c := Counter(arr)) == len(set(c.values()))
파이썬에서 제공하는 Counter 모듈을 이용하였다.
Counter는 hashable한 object의 수를 세는 dict
하위 클래스이다.
Counter를 이용하여 각 원소의 등장 횟수를 세고, set을 이용하여 원소의 중복된 등장 횟수를 제거하는 것이다.
주어진 배열의 크기만큼 순회하여 Counting 하는데 O(N)
, set으로 변환하는데 O(N)
이다. 따라서, 시간 복잡도는 O(N)
이다.
바다 코끼리 연산자 처음 써봤다. v