Programming/LeetCode
[Dart] 1207. Unique Number of Occurrences
Meezzi
2025. 4. 29. 09:49
728x90
1. 문제
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