리스트 요소의 빈도 구하기
class Solution {
bool uniqueOccurrences(List<int> arr) {
Map<int,int> frequency = {};
for (int num in arr){
frequency[num] = (frequency[num] ?? 0) + 1;
}
List<int> frequencies = frequency.values.toList();
// 빈도의 고유성 검사
return frequencies.length == frequencies.toSet().length;
}
}
map으로 요소와 빈도수를 받을 예정.
주어진 배열에서 요소를 하나씩 꺼내와서 frequency라는 맵이랑 비교
키가 요소이고 값이 빈도수.
frequncy[num]이 없으면 null 이기에 0으로 값을 주고 그 값에 1을 더해서 빈도수(값)을 1로 만든다.
만약 이미 존재한다면 +1을 통해 빈도수를 늘려준다.
map의 값만 리스트로 만들어주고
만약 각 요소의 빈도수가 고유한지, 겹치는 값이 없는지 검사해준다.
중복을 제거했을 때도 그 전 리스트와 같다면 중복된 값이 없다는 뜻.
이해하고 나면 간단한 코드인데 막상 문제를 보고 구현하려면 생각이 잘 떠오르지 않는다.
다트 문법을 좀 더 복습해야 할 듯.
'TIL' 카테고리의 다른 글
RPG 전투 게임 (0) | 2024.11.07 |
---|---|
[TIL] 큐&연결리스트 (0) | 2024.11.06 |
[TIL] 비동기 프로그래밍 (0) | 2024.11.04 |
[TIL] 예외/오류 (0) | 2024.11.01 |
[TIL] 콘솔 쇼핑몰 만들기 (0) | 2024.10.31 |