프로그래머스의 폰켓몬 문제가 추가돼서 풀어보았다.

 

링크

https://school.programmers.co.kr/learn/courses/30/lessons/1845

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

 

풀이

문제를 이해하는 것이 중요합니다.
입력 받은 폰켓몬 절반 기준으로 중복 없이 고를 수 있는 수를 반환하면 됩니다.

답은 2가지 중 하나입니다.
1. 중복 없이 고를 경우: 입력 받은 폰켓몬 수 / 2
2. 중복이 있을 경우: 중복 제거한 입력 받은 폰켓몬 수

ex1. 
{1, 2, 3, 4, 5, 6}
위의 경우 입력 받은 폰켓몬의 수는 6개, 절반은 3개입니다.
절반(3개)만큼 고를 때 중복 없이 고를 수 있으므로 정답은 3입니다.

ex2.
{1, 1, 1, 2, 2, 2}
위의 경우 입력 받은 폰켓몬의 수는 6개, 절반은 3개입니다.
절반(3개)만큼 고를 때 중복 없이 고를 경우 최대 2개 입니다.
정답은 2입니다.

// 스트림을 사용.
// boxed(): int -> Integer, double -> Double
// collect: 데이터 타입 지정.
// Collectors.toSet().size(): set으로 중복 제거 후 Count
// (nums.length / 2): 입력 받은 폰켓몬 수 절반
public int solution(int[] nums) {
    return Integer.min(
            Arrays.stream(nums)
                    .boxed()
                    .collect(Collectors.toSet()).size(), (nums.length / 2)
    );
}

 

후기

* 난이도 (5점 만점)

5 : 풀 줄 알면 기업 코딩 테스트는 문제없음.

4 : 평균적인 기업 코딩 테스트의 중간 이상.

3 : 평균적인 기업 코딩테스트의 쉬운 문제.

2 : 알고리즘 문제를 연습하고 있다면 풀 수 있는 문제.

1 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.

 

[프로그래머스] 폰켓몬은 자료구조를 공부한 후 접한다면 어렵지 않게 풀 수 있습니다.

+ Recent posts