Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 1차원 DP
- 2차원 dp
- 99클럽
- @BeforeAll
- @BeforeEach
- @Builder
- @Entity
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Query
- @Table
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- api gateway 설계
- api gateway 필터
- ApplicationEvent
- argocd
- assertThat
- async/await
- AVG
- AWS
- aws autoscaling
- aws eks
- aws iam role
- AWS KMS
Archives
- Today
- Total
기록
[programmers/python] 폰켓몬 - 최대한 다양한 종류 고르기, Set 본문
문제
- url : https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=python3
- 총 N마리의 폰켓몬이 있음 (항상 짝수)
- 각 폰켓몬은 종류 번호를 가짐
- 이 중 N/2마리만 선택 가능
- 선택한 폰켓몬 중 서로 다른 종류의 수가 최대가 되도록 하고 싶다
예시
nums = [3, 1, 2, 3]
# 선택할 수 있는 최대 마리 수: 4 // 2 = 2
# 폰켓몬 종류 수: 3 (1, 2, 3)
# 최대한 다양한 종류를 고르면 최대 2종류 선택 가능
# → 정답: 2
풀이 전략
핵심은 다음 두 가지다:
- 내가 고를 수 있는 폰켓몬 수는 N / 2 마리다.
- 폰켓몬의 종류 수가 그보다 작으면 종류 수만큼만 고를 수 있다.
→ 정리하면, 최대 선택 가능한 종류 수는 아래 두 값 중 작은 값이다.
min(고를 수 있는 수, 폰켓몬 종류 수)
즉,
min(len(nums) // 2, len(set(nums)))
코드
def solution(nums):
return min(len(nums)//2, len(set(nums)))
'코딩테스트 > python' 카테고리의 다른 글
[programmers/python] 의상 - collections.Counter (0) | 2025.05.24 |
---|---|
[programmers/python] 전화번호부 접두어 - 정렬 vs 해시맵 (0) | 2025.05.24 |
[programmers/python] 마라톤 완주자 찾기 - collections.Counter (0) | 2025.05.24 |
[programmers/python] 카펫 - 완전탐색 (0) | 2025.05.22 |
[programmers/python] 소수찾기 - 완전탐색, 에라토스테네스의 체 (0) | 2025.05.21 |
Comments