본문 바로가기
Algorithm

[Algorithm] 포켓몬 고르기

by dev_Step 2022. 6. 4.

프로그래머스[초급]

배열안에 포켓몬이 들어있으며, 같은 종류의 포켓몬끼리는 같은 번호로 되어 있다.

주어진배열중에서 내가 고를수 있는 포켓몬의 숫자는 " 총 포켓몬 숫자/2 " 이고

이중에 최대한 많은 종류의 포켓몬을 고를수 있는 숫자를 리턴하라

 

 

>>> 내 풀이

1. 일단 Set을 쓰면 중복을 제거해주기 때문에 사용하려고 하다가, 컬렉션을 사용하지 않고 풀어보려고

for문을 통해서 중복된 숫자를 0 으로 바꿔주고, 해당 배열의 0이 아닌 요소의 숫자를 구해서 중복되지 않은 

포켓몬의 숫자를 removeOverlap으로 구했다.

 

2. 이때  내가 골라야 하는 숫자는 총 포켓몬 숫자의  1/2 이고,

그러면 "내가 골라야 하는 숫자가 " removeOverlap 보다 크게 되면 

내가 중복되지 않은 최대한많은 포켓몬을 가질수 있는 숫자는  removeOverlap 이되고,

그 반대의 경우는 "내가 골라야 하는 숫자가" 된다.

============================================================================================다른 사람의 풀이로는 

Set을 이용한 방법과 Stream을 이용한 방법이 있었다.

이방법은 따로 기술하지 않도록 하겠다.