매일 백준 화면만 보다가 처음으로 프로그래머스 문제를 풀게 되었다.
처음에 프로그래머스로 알고리즘 문제풀이에 입문하려다가 문제 길이만 보고 겁이 나서 꺼버렸던 기억이 난다.
사실 지금도 별반 다르지는 않은데 이번에는 문제를 읽어봤다.
끝까지 읽어보니 별 거 아니였다. (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에 의존하지 않는 문제풀이도 연습할 겸 백준과 프로그래머스를 번갈아가며 풀어야겠다.
새로운 자료구조나 알고리즘은 백준 단계별로 먼저 터득하고 나중에 프로그래머스로 풀어보면 좋을 듯?
'CS ﹒ Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 문제풀이 (6) 성격 유형 검사하기 (0) | 2022.08.19 |
---|---|
프로그래머스 문제풀이 (5) 키패드 누르기 (0) | 2022.08.17 |
Java 프로그래머스 문제풀이 (4) 없는 숫자 더하기 (0) | 2022.08.11 |
JAVA 프로그래머스 문제풀이 (3) 소수 만들기 (0) | 2022.07.25 |
프로그래머스 문제 풀이 (2) 완주하지 못한 선수 (0) | 2022.07.24 |