th42500의 TIL

[Java] 프로그래머스 해시 Lv1 - 폰켓몬 본문

Algorithm/Programmers

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

th42500 2022. 4. 4. 23:20

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

✔ 입출력 예시

폰켓몬 입출력 예시

 

 

1️⃣ HashMap 활용하기

 

✔ 소스코드 

import java.util.HashMap;

public class Solution {  // 폰켓몬

	public static void main(String[] args) {
//		int[] nums = {3,1,2,3};
//		int[] nums = {3,3,3,2,2,4};
		int[] nums = {3,3,3,2,2,2};
		
		System.out.println(solution(nums));
	}

	private static int solution(int[] nums) {
		int answer = 0;
		
        // N/2마리 선택
		int n = nums.length/2;
        
		HashMap<Integer, Integer> hash = new HashMap<>();
		for (int i = 0; i < nums.length; i++) {
			hash.put(nums[i], hash.getOrDefault(nums[i], 0)+1);
		}
		
//		System.out.println(hash);
		
		if(hash.size() >= n) {
			answer = n;
		} else {
			answer = hash.size();
		}
		
		return answer;
	}

}

 

❗ 결과

👉 테스트 통과

HashMap을 이용했을 때의 결과

 

 

2️⃣ HashSet 활용하기

 

✔ 소스코드

import java.util.HashSet;

public class Poneketmon {  // 폰켓몬

	public static void main(String[] args) {
//		int[] nums = {3,1,2,3};
//		int[] nums = {3,3,3,2,2,4};
		int[] nums = {3,3,3,2,2,2};
		
		System.out.println(solution(nums));
	}

	private static int solution(int[] nums) {
		int answer = 0;
		
		int n = nums.length/2;
		HashSet<Integer> hash = new HashSet<>();
		for (int i = 0; i < nums.length; i++) {
			hash.add(nums[i]);
		}
		
		
		if(hash.size() >= n) {
			answer = n;
		} else {
			answer = hash.size();
		}
		
		return answer;
		
	}	

}

 

❗ 결과

👉 테스트 통과

HashSet을 이용했을 때의 결과

 

 

💡 포인트

1️⃣ 서로 다른 번호의 폰켓몬을 고르기

2️⃣ 최대 N/2마리까지 선택하되, 가장 많은 종류의 폰켓몬을 선택하는 방법을 구하기

Comments