공log/[P&B]

[P&B] #32 PreCodingTest

ming_OoO 2023. 8. 19. 23:16
728x90

프리코딩테스트 3-1

 

1) Unique Occurrences Number

오답 노트 코드

import java.util.*;
import java.util.stream.*;
class Solution {
    public boolean solution(int[] arr) {
        int[] maxArr = new int[Arrays.stream(arr).max().getAsInt() + 1];
        for (int i = 0; i < arr.length; i++) {
            maxArr[arr[i]]++;
        }
        List<Integer> list = new ArrayList<>();
        Set<Integer> set = new HashSet<>();
        for (int num : maxArr) {
            if(num != 0) {
                list.add(num);
                set.add(num);
            }
        }
        return list.size() == set.size();
    }
}

문제 풀이 코멘트

 maxArr는 arr 배열에 나타날 수 있는 최대 정수 값 + 1 크기의 배열입니다. 각 인덱스에 해당하는 숫자의 등장 횟수를 저장하기 위해 사용됩니다.

 각 숫자가 나타날 때마다 maxArr 배열의 해당 인덱스 값을 증가시킵니다. 이렇게 하면 각 숫자의 등장 횟수가 기록됩니다.

 list는 등장 횟수가 0이 아닌 숫자들의 카운트 결과를 저장하는 리스트이고, set은 등장 횟수가 0이 아닌 숫자들의 카운트 결과를 중복 없이 저장하는 집합입니다.

 등장 횟수가 0이 아닌 경우, 해당 숫자의 카운트 결과를 list와 set에 추가합니다. 이렇게 하면 list에는 숫자 카운트 결과의 목록이 저장되고, set에는 중복 없이 나타난 숫자 카운트 결과가 저장됩니다.

 만약 모든 숫자의 카운트 결과가 서로 다르다면, list.size()와 set.size()는 동일하게 됩니다. 따라서 return list.size() == set.size();은 모든 숫자의 카운트 결과가 서로 다른지를 판단하는 조건입니다.

 

이 외에도 다양한 방법으로 푼 방법들이 있었는데, 위의 코드가 내가 생각하지 못한 방법이면서도 공유하고 싶은 코드라 가져와보았다. 숫자들의 카운트 갯수와 숫자들의 갯수를 비교하는 방법은 새롭게 느껴졌다. 프로그래머스의 가장 큰 장점이 이런 다양한 코드를 공유받을 수 있다는 것 같다.

728x90

'공log > [P&B]' 카테고리의 다른 글

[P&B] #34 PreCodingTest  (0) 2023.08.21
[P&B] #33 PreCodingTest  (0) 2023.08.20
[P&B] #31 PreCodingTest  (0) 2023.08.18
[P&B] #30 PreCodingTest  (0) 2023.08.17
[P&B] #29 PreCodingTest  (0) 2023.08.16