hoon's bLog

[Java] 프로그래머스 폰켓몬 자바 본문

코딩테스트/프로그래머스

[Java] 프로그래머스 폰켓몬 자바

개발한기발자 2022. 6. 16. 12:24
반응형

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/1845

 

코딩테스트 연습 - 폰켓몬

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

programmers.co.kr


 

[나의 풀이]

- 배열을 순차적으로 Set에 담아 중복 값 제거

- 2마리를 고르는 것이기 때문에 입력 배열에 절반값이 작거나 같으면 배열의 절반값, 아닐 경우 Set의 담긴 크기로 return

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

 

[다른 사람의풀이]

import java.util.Arrays;
import java.util.stream.Collectors;

class Solution {
    public int solution(int[] nums) {
    	/**
         * nums 배열을 받아 Arrays.stream(nums).boxed로 스트림을 생성한뒤,
         * Collectors.collectingAndThen로 Set으로 만들고,
         * phonekemons로 Set을 입력받아 phonkemons Set 사이즈와 num.length/2의 최소값을 구해서,
         * Set의 int값 return
         **/
        return Arrays.stream(nums)
                .boxed()
                .collect(Collectors.collectingAndThen(Collectors.toSet(),
                        phonekemons -> Integer.min(phonekemons.size(), nums.length / 2)));
    }
}

 

[정리]

- Collection Framework의 Set을 이용하여 중복제거가 포인트!

- Stream 표현법은 정말 성능을 떠나서 대단하다...

 

개인피셜 난이도 : ★☆☆☆☆

Stream을 빨리 빠른 시일 내에 정리를 해야 할 듯하다...

볼 때마다 새롭고, Debugging도 쉽지 않아서 매번 구글링도 엄청난 자원 소모인 듯하다...

내 딴에 쉽게 알아보려고 글로 풀어 보았는데 맞게 해석된 건지 잘 모르겠다....

부디 이 글을 보신 고수님들이 따끔한 댓글 달아주셨으면 좋겠다!!..

 

끝!

 

참고 블로그

- Stream 관련 함수 : https://sabarada.tistory.com/41

 

[Java 8] Java 8, Stream의 Collectors

안녕하세요. 이전 시간에 우리가 Stream에 대해서 알아봤던 것 기억하시나요? 오늘은 이어서 Collectors에 대해서 이야기 해보려고 합니다. Collectors란 "Stream을 일반적인 List, Set등으로 변경시키는 Stre

sabarada.tistory.com

 

 

 

 

 

 

 

 

728x90
반응형