프로그래머스의 폰켓몬 문제가 추가돼서 풀어보았다.
링크
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 : 시간이 오래 걸리지 않고, 누구나 풀 수 있는 문제.
[프로그래머스] 폰켓몬은 자료구조를 공부한 후 접한다면 어렵지 않게 풀 수 있습니다.
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (0) | 2022.10.21 |
---|---|
[프로그래머스] 모의고사 (0) | 2022.10.19 |
[프로그래머스] 문자열을 정수로 바꾸기 (0) | 2022.10.18 |
[프로그래머스] 최소직사각형 (0) | 2022.10.17 |
[프로그래머스] 완주하지 못한 선수 (0) | 2022.10.15 |