다희의 코딩 성장일기

[프로그래머스] level1. 폰켓몬 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level1. 폰켓몬 (자바 JAVA)

ilmiodiario 2021. 8. 23. 22:17

[ 문제 ]  [프로그래머스] level1. 폰켓몬 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.

programmers.co.kr


# 접근 방법 및 풀이 

 

  • HashSet을 이용해서 풀었다. set은 중복을 처리하기 좋은 자료형이다. 종류가 같은 폰켓몬들의 종류만 뽑을 수가 있다.
  • 1,1,2,3,4,4 가 들어있다면 set에는 1,2,3,4만 들어있을 것이다.
  • 먼저, 최대로 뽑을 수 있는 폰켓몬 수는 N/2이다. 
  • nums 배열을 돌면서 중복을 처리해 폰켓몬의 종류들을 뽑아 set에 담는다.
  • set의 size가 N/2보다 크거나 같으면 답은 N/2고, size가 작다면 size가 답이된다.
  • 예를들어, 폰켓몬의 종류가 1,2,3,4,5,6,7,8개 있어도 뽑을 수 있는 최대 폰켓몬 갯수가 8/2 = 4이기 때문이다.
  • 반대로, 폰켓몬의 종류가 1,2밖에 없는데 최대 4개 뽑을 수 있어도 종류가 두가지라 답은 2가 된다.
  • 자세한건 코드참조 

# 주의할 점 

 

  • 딱히없음

 

JAVA 코드
import java.util.*;
class Solution {
    public int solution(int[] nums) {
        int answer = nums.length / 2;
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i = 0; i < nums.length; i++){
            set.add(nums[i]);
        }
        answer = (set.size() >= answer)? answer : set.size();
        return answer;
    }
}

 

 

 

REVIEW

Comments