[코테] 폰켓몬

HOU·2022년 5월 24일
0

코딩테스트

목록 보기
4/24
post-thumbnail

문제

폰켓몬

문제 설명

홍박사님 께서 폰켓몬을 준다고 한다. 포켓몬 처럼 하나의 포켓몬을 얻는게 아닌 아낌 없이 주는 홍복사님은 자신이가진 포켓몬 nums배열에서 len(nums)/2 마리를 가져가도 좋다고 하셨다.
홍박사님의 포켓몬은 번호에 따라 구분하고, 같은 포켓몬이 존재할 수 있다.

ex) [3번, 1번, 2번, 3번] 3번 포켓몬 2마리, 1번 포켓몬 1마리, 2번 포켓몬 1마리를 의미합니다.

이때 4마리의 포켓몬 중 2마리를 고르는 방법은 6가지가 있다.
1. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택
2. 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택
3. 첫 번째(3번), 네 번째(3번) 폰켓몬을 선택
4. 두 번째(1번), 세 번째(2번) 폰켓몬을 선택
5. 두 번째(1번), 네 번째(3번) 폰켓몬을 선택
6. 세 번째(2번), 네 번째(3번) 폰켓몬을 선택

서로 다른 두 종류의 포켓몬을 가질 수 있고, 그 최대값은 2가 된다. 최대값을 구하는 방법을 구해라!

해결법

나는 해결법으로 ponketmon이라는 배열을 만들고 nums를 반복문을 돌면서 ponketmon에 없는 인자들만 ponketmon에 넣어 주었다. 그리고 폰켓몬의 길이가 nums/2보다 작은 경우에만 값을 넣게 만들었다.!

1. ponketmon에 없는 경우

not in 이라는 함수를 활용해서 처리했다.

n not in poketmon

2. 폰켓몬 길이의 절반보다 높은 경우

len() 함수를 이용해서 처리했다.

len(ponketmon) < len(nums)/2

문제 풀이

내가 푼 풀이

def solution(nums):
    ponketmon = [];
    for n in nums: 
        if (n not in ponketmon) and (len(ponketmon) < len(nums)/2):
            ponketmon.append(n)

    return len(ponketmon)

다른 사람이 푼 풀이

def solution(ls):
    return min(len(ls)/2, len(set(ls)))

대단하다! awsome!
뭐가 얼마나 있는지 구하는게 아니라.. 우리는 가져갈 포켓몬의 갯수만 구하면 되는거니까...
진짜 쉽게 짜는 코드들이 많구나 싶다!

소감

꼭 기억하자 set()

profile
하루 한 걸음 성장하는 개발자

0개의 댓글