알고리즘/Java

programmers: 폰켓몬 (Java)

두넌 2023. 4. 11.

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

 

프로그래머스

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

programmers.co.kr

 

음 풀이

import java.util.ArrayList;

class Solution {
    public int solution(int[] nums) {
        int answer = 0;
        ArrayList<Integer> ponum = new ArrayList<>();
        for(int i: nums) {
            if(!ponum.contains(i))  ponum.add(i);
        }
        if(ponum.size() > (nums.length / 2))    answer = nums.length / 2;
        else    answer = ponum.size();
        return answer;
    }
}

나중 풀이 (다른사람의 풀이 참고)

import java.util.HashSet;

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

 

HashSet을 사용하면 중복된 요소를 허용하지 않고, 값을 넣을 수 있다

- 내부의 값을 검색하는 경우 contains(value) 메소드 사용
- null 요소 또한 허용

따라서 해당 문제는 첫번째 풀이(ArrayList 사용)면 중복된 값을 다시 걸러내야 하는 필요성이 존재하지만
HashSet을 사용하면 자동으로 이를 걸러주어 add 하기 때문에 수고로움을 덜 수 있음

댓글