끄적끄적 코딩일지

[Programmers]폰켓몬(난이도:★★★★★) 본문

알고리즘

[Programmers]폰켓몬(난이도:★★★★★)

BaekGyuHyeon 2022. 5. 17. 09:04

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

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr

class Solution {
// 정렬후 다른 숫자가 나올때마다 counter을 증가시키면
// 최대로 다른 종류 고르는 수를 얻을 수 있다.
    public int solution(int[] nums) {
        int answer = 0;
        int selectCount = nums.length / 2;
        int selectNum = 0;
        sort(nums);
        for(int i = 0 ; i < nums.length;i++){
            if(nums[i] != selectNum){
                selectNum = nums[i]; 
                answer++;
            }
            // count가 최대 선택 수를 넘어가면 break
            if(answer == selectCount)
                break;
        }
        return answer;
    }
    public void sort(int[] arr){
	        int idx = arr.length-1;
	        for(int i = 0 ; i < arr.length;i++){
	            for(int j = 0 ; j < idx; j++){
	                if(arr[j] < arr[j+1] || arr[j] == 0){
	                    int tmp = arr[j];
	                    arr[j] = arr[j+1];
	                    arr[j+1] = tmp;
	                }
	            }
	            idx--;
	           
	        }
	    }
}