Programming/LeetCode

[Dart] 1207. Unique Number of Occurrences

Meezzi 2025. 4. 29. 09:49
728x90

1. 문제

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

 

 

 

2. 요구사항

1) 정수 배열 arr가 주어진다.

2) 배열 arr의 각 원소가 나타나는 빈도 수가 고유한지 확인한다.

3) 각 원소의 빈도가 모두 다르면 true를 반환하고, 그렇지 않으면 false를 반환한다.

 

 

 

3. 코드

class Solution {
  bool uniqueOccurrences(List<int> arr) {
    // 빈 이중 리스트를 만듭니다.
    // list[0]: 등장한 숫자들
    // list[1]: 각 숫자들의 등장 횟수
    List<List<int>> list = [[], []];

    // 주어진 배열(arr)을 하나씩 순회합니다.
    for (int a in arr) {
      if (list[0].contains(a)) {
        // 이미 등장했던 숫자라면
        // 그 숫자가 있는 인덱스를 찾고
        int index = list[0].indexOf(a);
        // 해당 인덱스의 등장 횟수를 1 증가시킵니다.
        list[1][index]++;
      } else {
        // 처음 등장하는 숫자라면
        // list[0]에 추가하고
        list[0].add(a);
        // 등장 횟수 1로 초기화해서 list[1]에 추가합니다.
        list[1].add(1);
      }
    }

    // 등장 횟수 리스트(list[1])을 Set으로 변환해서 중복 제거합니다.
    Set<int> listSet = Set<int>.from(list[1]);

    // 만약 등장 횟수의 개수와 Set으로 만든 개수가 같다면
    // (즉, 중복된 등장 횟수가 없다면) true를 반환합니다.
    if (list[1].length == listSet.length) {
      return true;
    } else {
      return false;
    }
  }
}

 

 

 

728x90