본문 바로가기

배운 거/Algorithm

[Lv2. 해시 ] 폰켓몬

주어진 배열의 길이 값의 절반 만큼 선택할 수 있으나

배열의 요소가 중복이 되어있으면 선택횟수보다 선택할 수 있는 종류가 줄어든다.

 

배열의 중복요소를 제거한 후. 원래 배열 길이값의 절반(a)과 중복요소를 제거한 배열의 길이(b)를 비교하여

a와 b를 필요 맞게 출력하면 되는 데

 

일단 배열의 중복요소를 제거하는 것 중에 편한방법이 HashSet을 이용하거나 ArrayList를 사용하는 것인데

 

https://blog.naver.com/PostView.naver?blogId=zzang9ha&logNo=221848934382&categoryNo=0&parentCategoryNo=0 

 

[Java/자바] - 배열에서 중복을 제거하고 정렬하기

안녕하세요, 오늘 문득 공부하다가 배열에서 중복을 제거하고 정렬은 어떻게하면 될지 생각하다가 한 번 정...

blog.naver.com

HashSet 사용이 출제의도인거 같아서 HashSet을 사용하여 풀었다.

 

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int solution(int[] nums) {
        int answer = nums.length/2;
        Set<Integer> set = new HashSet<Integer>();
        for(int i : nums){            
            set.add(i);
        }        
        return (set.size() > answer)? answer : set.size();
    }
}

 

우선 주어진 int 배열의 길이를 반으로 나눈 값을 선언해주고

빈 HashSet을 만들어준다.

그리고나서 주어진 int 배열을 HashSet에 추가해주는데 HashSet은 중복값이 저장 안되므로

결국 중복되지 않은 값만 저장이된다.

 

출력에 삼항연산으로 값을 비교후 HashSet의 길이가 주어진 배열의 길이의 절반보다 같거나 클 때

HashSet의 길이를 출력해주도록 해서 통과했다

끝.

 

https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java 

 

프로그래머스

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

programmers.co.kr