문제
https://school.programmers.co.kr/learn/courses/30/lessons/1845
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
처음 해당 문제를 읽으면 조금 난해 할 수 있다. 하지만 지문을 조금만 더 잘 이해해 본다면 쉽게 풀 수 있는 있다. 현재 문제에서는 N/2 마리의 폰켓몬을 선택하는 방법 중 가장 많은 종류의 폰켓몬을 선택하는 방법을 문제이다.
예를 들어서 만약에 [3,3,3,2,2,1]라는 폰켓몬이 넘어오게 된다면, N/2 마리까지 선택 가능함으로 3마리까지 선택가능 하다. 그중에서 다양하게 뽑을 수 있는 폰켓몬 종류는 는 1, 2, 3 가 있으므로 result 값은 3이 된다.
만약 [3,3,3,2,2,2]가 들어오게 된다면 N/2 마리까지 선택이 가능함으로 3마리 까지 선택이 가능하다. 그중에서 뽑을 수 있는 폰켓몬의 종류는 2, 3 두 가지뿐이기 때문에 result 값은 2가 된다.
마지막으로 [1, 1, 1, 2, 3, 4, 5, 6] 이 들어온다면 N/2 마리까지 선택이 가능함으로 최대 4마리 까지 선택이 가능하다 그중에서 가장 많은 종류의 폰켄못을 뽑을 수 있는 1,2,3,4... 등등이 있기 때문에 result 값은 4가 된다.
따라서 선택가능한 폰켓몬의 개수와 폰켓몬의 종류를 적절하게 비교하자면 result 값을 쉽게 표현할 수 있다.
다음은 해당 풀이를 코드로 표현한 Python 코드이다.
🖥️ main.py
def solution(nums):
return len(nums) // 2 if len(nums) // 2 < len(set(nums)) else len(set(nums))
'Algorithm > Programmers' 카테고리의 다른 글
프로그래머스 Lv1 바탕화면 정리 (0) | 2023.05.30 |
---|---|
프로그래머스 LV1 게임 맵 최단 거리 (0) | 2023.05.25 |
프로그래머스 Lv1 개인정보 수집 유효기간 (0) | 2023.05.19 |
프로그래머스 LV1 햄버거 만들기 (0) | 2023.05.19 |
프로그래머스 LV1 크레인 인형 뽑기 게임 (0) | 2023.05.19 |