프로그래머스 폰켓몬 JAVA 풀이 (HashSet, 자료구조)

2026. 6. 15. 16:35·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


📌 문제 개요

홍 박사님의 연구실에는 여러 종류의 폰켓몬이 존재한다.

전체 폰켓몬 수가 N마리일 때, 정확히 N/2마리를 선택할 수 있다.

 

이때 최대한 다양한 종류의 폰켓몬을 선택하려고 하며, 선택 가능한 폰켓몬 종류 수의 최댓값을 구하는 문제


📌 접근 방법

처음에는 어떤 폰켓몬을 선택해야 하는지 조합을 구해야 할 것처럼 보인다.

하지만 실제로 중요한 것은 선택한 폰켓몬의 종류 수이다.

 

따라서 HashSet을 이용하여 중복을 제거한 후 전체 종류 수를 구한다.

이후 선택 가능한 마리 수(N / 2)와 종류 수를 비교하여 더 작은 값을 반환하면 된다.


📌 핵심 아이디어

  • HashSet으로 폰켓몬 종류를 중복 없이 저장한다.
  • set.size()로 전체 종류 수를 구한다.
  • 선택 가능한 폰켓몬 수는 nums.length / 2이다.
  • 가질 수 있는 최대 종류 수는 두 값 중 작은 값이다.

예시)

nums = [3,3,3,2,2,4]

종류 수 = 3
선택 가능 수 = 6 / 2 = 3

정답 = 3

예시)

nums = [3,3,3,2,2,2]

종류 수 = 2
선택 가능 수 = 6 / 2 = 3

정답 = 2
 

📌 전체 코드

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int solution(int[] nums) {
        Set<Integer> set = new HashSet<>();

        for (int num : nums) {
            set.add(num);
        }

        return Math.min(set.size(), nums.length / 2);
    }
}

📄 정리

이 문제는 조합을 구하는 문제가 아니라 중복 제거 문제에 가깝다.

HashSet으로 종류 수를 구한 뒤, 선택 가능한 마리 수와 비교만 하면 된다.

 

문제의 조건을 단순화해서 바라보는 것이 중요한 문제였다.

 
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 덧칠하기 JAVA 풀이 (그리디)  (0) 2026.06.16
프로그래머스 소수 만들기 JAVA 풀이 (조합, 소수 판별)  (0) 2026.06.16
프로그래머스 기사단원의 무기 JAVA 풀이 (약수, 구현)  (0) 2026.06.15
프로그래머스 지폐 접기 JAVA 풀이 (구현, 반복문)  (0) 2026.06.13
프로그래머스 자릿수 더하기 JAVA 풀이 (수학, 구현)  (0) 2026.06.12
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 덧칠하기 JAVA 풀이 (그리디)
  • 프로그래머스 소수 만들기 JAVA 풀이 (조합, 소수 판별)
  • 프로그래머스 기사단원의 무기 JAVA 풀이 (약수, 구현)
  • 프로그래머스 지폐 접기 JAVA 풀이 (구현, 반복문)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    백엔드개발자
    브루트포스
    기출문제
    dp
    백준
    정처기오답노트
    정보처리기사 실기 기출문제
    자바
    시뮬레이션
    level0
    프로그래머스
    코딩테스트
    수학
    실기
    level1
    springboot
    solved.ac
    정렬
    완전탐색
    알고리즘
    구현
    문자열
    피보나치
    배열
    자료구조
    Level2
    정처기
    java
    정보처리기사
    정처기실기
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 폰켓몬 JAVA 풀이 (HashSet, 자료구조)
상단으로

티스토리툴바