프로그래머스[초급]
배열안에 포켓몬이 들어있으며, 같은 종류의 포켓몬끼리는 같은 번호로 되어 있다.
주어진배열중에서 내가 고를수 있는 포켓몬의 숫자는 " 총 포켓몬 숫자/2 " 이고
이중에 최대한 많은 종류의 포켓몬을 고를수 있는 숫자를 리턴하라
>>> 내 풀이
1. 일단 Set을 쓰면 중복을 제거해주기 때문에 사용하려고 하다가, 컬렉션을 사용하지 않고 풀어보려고
for문을 통해서 중복된 숫자를 0 으로 바꿔주고, 해당 배열의 0이 아닌 요소의 숫자를 구해서 중복되지 않은
포켓몬의 숫자를 removeOverlap으로 구했다.
2. 이때 내가 골라야 하는 숫자는 총 포켓몬 숫자의 1/2 이고,
그러면 "내가 골라야 하는 숫자가 " removeOverlap 보다 크게 되면
내가 중복되지 않은 최대한많은 포켓몬을 가질수 있는 숫자는 removeOverlap 이되고,
그 반대의 경우는 "내가 골라야 하는 숫자가" 된다.
============================================================================================다른 사람의 풀이로는
Set을 이용한 방법과 Stream을 이용한 방법이 있었다.
이방법은 따로 기술하지 않도록 하겠다.
'Algorithm' 카테고리의 다른 글
[Algorithm] 체육복 (0) | 2022.06.03 |
---|---|
[Algorithm] 가장 점수가 높은 사람을 리턴 하라 (0) | 2022.06.02 |
[Algorithm] K번째 숫자 (0) | 2022.06.01 |
[Algorithm] 완주하지 못한 선수 (0) | 2022.05.31 |
[Algorithm/Lamda] 함수형 인터페이스 (0) | 2022.05.28 |