CS ﹒ Algorithm/Programmers

프로그래머스 문제풀이 (1) 폰켓몬

양또띠 2022. 7. 21. 14:20

 

매일 백준 화면만 보다가 처음으로 프로그래머스 문제를 풀게 되었다.

처음에 프로그래머스로 알고리즘 문제풀이에 입문하려다가 문제 길이만 보고 겁이 나서 꺼버렸던 기억이 난다.

사실 지금도 별반 다르지는 않은데 이번에는 문제를 읽어봤다.

끝까지 읽어보니 별 거 아니였다. (1레벨 문제니까)

 

1. 내가 가질 수 있는 포켓몬의 종류의 최대 수는 제공 되는 총 포켓문의 수/2이다.

2. 그리고 중복 포켓몬은 가질 수 없다.

 

중복된 값을 가질 수 없는 자료구조를 생각해보자.

Map으로도 가능은 하겠지만 깔끔하게 Set으로 푸는 게 더 예쁠 것 같다.

 

그리고 Set의 사이즈는 제공되는 배열의 /2보다 작거나 같아야한다.

 

 

 

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        Set<Integer> myMonsters = new HashSet<>();
        for (int n : nums) {
            if (myMonsters.size() == nums.length/2) { return myMonsters.size();}
            myMonsters.add(n);
        }
        return myMonsters.size();
    }
}

 

 

완전히 기초 중의 기초 문제인데, 확실히 프로그래머스 문제는 백준 문제와 달리 쉬운 문제도 코테에 익숙하지 않으면 어려워보이게 만드는 재주가 있는 것 같다.

앞으로는 IDE에 의존하지 않는 문제풀이도 연습할 겸 백준과 프로그래머스를 번갈아가며 풀어야겠다.

새로운 자료구조나 알고리즘은 백준 단계별로 먼저 터득하고 나중에 프로그래머스로 풀어보면 좋을 듯?