1207. 고유한 빈도 횟수
문제
정수 배열 arr가 주어집니다.
배열 arr의 각 원소가 나타나는 빈도 수가 고유한지 확인하고자 합니다.
각 원소의 빈도가 모두 다르면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
풀이
1. arr 원소가 key, arr 원소 빈도가 value 인 map 을 생성한다.
2. arr 를 순회하면서 배열 원소 빈도 수를 업데이트한다.
3. map 의 value 값을 list 와 set 으로 각각 변환한다.
4. 중복이 제거된 set 과 list 의 길이로 중복을 체크한다.
bool uniqueOccurrences(List<int> arr) {
// key: 배열 숫자 value: 배열 숫자의 빈도
Map<int, int> arrCount = {};
for (int i in arr) {
// 배열 원소가 이미 있는 경우 value 업데이트
arrCount[i] = arrCount.putIfAbsent(i, () => 0) + 1;
}
// 중복된 값 체크!
// value 값 list 로 변환
List<int> valueList = arrCount.values.map((e) => e).toList();
// list 를 set 으로 중복 제거
Set<int> valueSet = valueList.toSet();
// 두 collection 의 길이가 같으면 빈도 고유, 다르면 빈도 고유 X
return valueList.length == valueSet.length;
}
'기타 > 알고리즘' 카테고리의 다른 글
LeetCode 1137 n번째 Tribonacci 수 (0) | 2024.11.13 |
---|---|
LeetCode - 206 역방향 연결리스트 (0) | 2024.11.06 |
LeetCode - 643 최대 평균 하위 배열1 (0) | 2024.10.31 |
Leetcode - 꽃 심기 / 문자열의 역모음 (0) | 2024.10.29 |
LeetCode - 문자열의 최대 공약수/가장 많은 사탕을 가지고 있는 아이들 (0) | 2024.10.28 |
댓글