[프로그래머스] 폰켓몬 (Hash)

2025. 5. 11. 07:17·Algorithm/Coding Test Records

문제 소개

오늘 풀었던 프로그래머스 - 폰켓몬 문제를 정리합니다.

이 문제는 총 N마리의 폰켓몬 중에서 N/2마리만 선택할 수 있을 때,
가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아 그때의 종류 개수의 최댓값을 구하는 문제입니다.

문제 링크: 폰켓몬 - 프로그래머스


문제 접근 방식

이 문제는 다음과 같은 방식으로 접근했습니다:

  1. 선택할 수 있는 폰켓몬 수는 고정 = N / 2
  2. 폰켓몬의 종류 수가 이보다 많다면, 최대 N / 2 종류만 선택 가능
  3. 폰켓몬의 종류 수가 이보다 적다면, 그 종류 수만큼만 선택 가능
  4. 따라서 정답은 min(전체 종류 수, N / 2)

해결 과정 및 코드

핵심 아이디어

  1. HashSet을 사용하면 중복 없이 폰켓몬의 종류 수 계산 가능
  2. 이후, nums.length / 2와 set.size() 중 작은 값이 최댓값

코드

시간 복잡도 : O(N)

import java.util.*;

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);
    }
}

'Algorithm > Coding Test Records' 카테고리의 다른 글

[프로그래머스] 의상 (Hash)  (0) 2025.05.13
[프로그래머스] 전화번호 목록 (Hash)  (0) 2025.05.12
[프로그래머스] 이중우선순위큐 (Heap)  (0) 2025.05.10
[프로그래머스] 디스크 컨트롤러 (Heap)  (0) 2025.05.09
[프로그래머스] 더 맵게 (Heap)  (1) 2025.05.08
'Algorithm/Coding Test Records' 카테고리의 다른 글
  • [프로그래머스] 의상 (Hash)
  • [프로그래머스] 전화번호 목록 (Hash)
  • [프로그래머스] 이중우선순위큐 (Heap)
  • [프로그래머스] 디스크 컨트롤러 (Heap)
Celion
Celion
오늘도 평소처럼 화이팅!
  • Celion
    Orion Log
    Celion
  • 전체
    오늘
    어제
    • 전체 글 (144)
      • Uncompiled Thoughts (8)
        • 네이버 부스트캠프 10기 (5)
      • CS 기초부터 한 걸음씩 (34)
      • Code Odyssey (22)
      • Algorithm (77)
        • Coding Test Records (63)
      • Git (3)
      • reference (0)
  • 블로그 메뉴

    • 태그
    • 방명록
  • 태그

    Kotlin
    Level3
    Level2
    boostcamp
    문법정리
    알고리즘고득점kit
    백준
    코테
    시뮬레이션
    java
    프로그래머스
    greedy
  • 최근 글

  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
Celion
[프로그래머스] 폰켓몬 (Hash)
상단으로

티스토리툴바