본문 바로가기
코테/프로그래머스

[프로그래머스] 폰켓몬 - Java

by gayoungeeda 2023. 7. 3.
728x90

 

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

 

문제 설명


맵을 쓰면 편하겠지만 굳이 쓸 필요가 있을까? 싶어서 처음에는 그냥 1차원 배열로만 풀어봤다.

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        int[] chk = new int[nums.length + 1];
        int i;
        
        for (i = 0; i < nums.length; i++) {
			chk[nums[i]]++;
            if (answer >= nums.length / 2)
                return answer;
            else if (chk[nums[i]] == 1) answer++;
		}
        
        return answer;
    }
}

결과는 처참히 실패...

긴 배열이 들어오면 런타임 에러가 걸려버리는 듯 하다

 

아래는 맵을 사용한 풀이

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.putIfAbsent(nums[i], 0);
		}
        
        if (map.size() > nums.length / 2)
        	answer = nums.length / 2;
        else
        	answer = map.size();
        
        return answer;
    }
}

통과했따