본문 바로가기

CS ﹒ Algorithm/Programmers

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

 

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

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

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

끝까지 읽어보니 별 거 아니였다. (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에 의존하지 않는 문제풀이도 연습할 겸 백준과 프로그래머스를 번갈아가며 풀어야겠다.

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