📘 문제
https://programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스 코딩테스트 연습 문제 level 1 의 문제이다. N마리 폰켓몬의 종류 번호가 담긴 배열이 주어졌을 때 2/N 마리를 선택하여 가장 많은 종류의 포켓몬을 선택하는 방법을 찾아 리턴 하면 된다.
저는 문제를 읽고 다음과 같이 생각을 하였습니다.
첫째, 길이가 0일 때 (빈 배열이 올 때) 리턴값 또한 0이다.
둘째, 종류가 다른 폰켓몬이 배열의 원소 값만큼 많아도 2/N 을 넘지 못한다
위 두가지 사항을 봤을 때 간단히 해결이 가능했습니다.
다음은 저의 코드입니다.
if(nums.length === 0) return answer;
길이가 0일 때 (비어있는 배열이 주어졌을 때) 0을 리턴하고
nums
배열을 오름차순으로 정렬한 뒤 차례대로 종류가 다른 폰켓몬이 나올 때마다 stack
에 push
하여 줍니다. 그럼 nums
로 주어진 폰켓몬의 종류를 구할 수 있습니다.
제약중 2/N마리 즉 nums.length/2
를 넘겨서 폰켓몬을 선택할 수 없으므로 조건문을 걸어 결과값을 return
해줍니다.
비교적 간단한 문제였습니다.
다른 분들의 풀이를 보았는데 이게...Javascript다 보니 너무나도 다양한 풀이가 나와서 양이 많더라구요...;;;
그에 반해 Python은 대체적으로 풀이가 비슷합니다. 역시 주목받는 코딩테스트 언어는 다르더군요.
프로그래머스 연습문제 level 1 은 정렬과 배열의 활용에 중점을 둔 듯 싶습니다.