프로그래머스 (포켓몬_JAVA)

김승연·2021년 3월 1일
0

알고리즘스터디

목록 보기
8/11

문제 설명

문제 설명글은 길지만 잘 읽어보면..
최대가질 수 있는 수는 n/2이고, 포켓몬 종류의 수가 n/2보다 적으면 종류의 숫자가 답이다.
예외의 수로 둘의 수가 같으면 2를 반환하고...

문제 풀이 방법

첫번째로 생각해낸것이... 배열로 반을 나눈 후 앞부분과 뒷부분을 하나씩 비교해서 중복되는 값을 빼려고 했으나... 노가다일것 같아서 ArrayList로 중복값을 빼면서 계산해 봤다..

import java.util.ArrayList;
class Solution {
public int solution(int[] nums) {
int answer = 0;
ArrayListlist=new ArrayList();
//list.add(nums[0]);

 for (int i : nums) {
	if (! list.contains(nums[i]))
		list.add(nums[i]);
 }
 if (list.size()==nums.length/2)
     answer=nums.length/2;
 else if ( list.size() < nums.length/2 ) 
	 answer=list.size();
 else if (list.size() > nums.length/2)
	 answer=nums.length/2;
    
   return answer; 

}
}

실패. 왜지??
1번 3번 테스트는 통과했는데 2번이 실패.
잘 모르겠다.
hashset으로 해봤다.

import java.util.HashSet;
class Solution {

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

}
}

                            
profile
Doing nothing cause nothing to happen.

0개의 댓글