본문 바로가기
기타/알고리즘

LeetCode - 1207 고유한 빈도 횟수

by 개발짜 2024. 11. 5.

 

 

1207. 고유한 빈도 횟수

https://leetcode.com/problems/unique-number-of-occurrences/description/?envType=study-plan-v2&envId=leetcode-75

 

 

문제

정수 배열 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;
}

 

댓글