본문 바로가기

열정가득한 개발자의 이야기/프로그래머스 문제

포켓몬 (자바 비기너)

안녕하세요!

정말 오랜만에 포스팅하네요

오늘부터 코테 스터디를 시작해서 이에 대한 내용을 한 땀 한 땀 정리하려고 합니다.

일단 문제는 아래 링크를 통해 들어가셔서 확인해 주세요!

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

 

프로그래머스

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

programmers.co.kr

 

문제 요약 :

1) nums / 2한 길이를 넘으면 안 됨

2) nums/2한 길이와 동일한 수로 중복이 되면 안 됨 

-> 음.. 이 부분이 좀 이해가 안 가요 솔직히,,

예로 {1,2,3,3)이 들어있으면 경우의 수가 1,2 / 1,3 / 2,3 이렇게 3번인데.. 중복을 안 한다는 가정하에..

그러나 저렇게 되면 nums/2한 값을 넘겨버리니 틀립니다.. 그래서 그냥 nums/2한 값을 넣어줬어요 

그리고 hash.add해서 알아서 중복값을 삭제해줍니다.!

 

고려사항 : hash를 사용해야 함

 

답 :

 

import java.util.*;

class Solution {
    public int solution(int [] nums) {
        HashSet <Integer> hash = new HashSet <>();
        int limit = nums.length / 2;
        for(int i = 0; i < nums.length; i++){
            hash.add(nums [i]);
        }
        return Math.min(hash.size(), limit);
    }
}

 

min함수는 (1,2) : 1번 수와 2번 수 중, 작은 것을 return 하기 때문에 min함수에 다 넣어버렸습니다...