본문 바로가기
CodingTest/Programmers

[Programmers] 포켓몬

by 창브로 2025. 3. 27.

[문제 링크]

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java

 

프로그래머스

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

programmers.co.kr

 

[풀이 과정]

결국 각각의 갯수를 기록하고 찾아야하는 문제이기 때문에 Map 자료구조를 활용하였다.

일단 (숫자, 갯수)를 Map에 집어넣고 머리를 굴렸다.

처음에는 for문으로 하나씩 돌려서 해볼까 했지만 시간초과가 뜰 것 같았다.

 

손으로 예제를 적으면서 해보니 map의 size가 nums.length / 2 보다 크면

어짜피 반을 들고 가야하니 nums.length / 2가 답이고 반대면 map.size가 답인 결론이 나왔다.

 

[코드]

import java.util.*;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        Map<Integer, Integer> map = new HashMap<>();
        
        for(int i = 0; i < nums.length; i++) {
            map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }
        
        if(map.size() > (nums.length / 2)) {
            return nums.length / 2;
        } else {
            return map.size();
        }
    
    }
}

[회고]

생각보다 헷갈렸지만 떠오르는 순간 쉬웠습니다.

 

 

 

 

질문과 피드백은 언제나 환영입니다.

감사합니다.

'CodingTest > Programmers' 카테고리의 다른 글

[Programmers] 기능개발  (0) 2025.04.03
[Programmers] 베스트앨범  (0) 2025.04.01
[Programmers] 의상  (1) 2025.03.29
[Programmers] 전화번호 목록  (0) 2025.03.28
[Programmers] 완주하지 못한 선수  (0) 2025.03.27