문제
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 소요 시간 : 15분
- 난이도 : LV 2
접근 방법
1. 종류별 개수를 센 뒤 많은 순으로 정렬한다.
ex. 1, 3, 2, 5, 4, 2, 3
1: 1개
4: 1개
2: 2개
3: 2개
5: 2개
=> [2, 2, 2, 1, 1]
2. 종류별 개수 리스트를 돌면서 k만큼 가져간다.
ex. k = 6
2+2+2 => 3번째 원소까지 가져갈 수 있다.
ex. k=4
2+2 => 2번째 원소까지 가져갈 수 있다.
풀이
나의 풀이
from collections import defaultdict
def solution(k, tangerine):
count_dict = defaultdict(int)
for t in tangerine:
count_dict[t] += 1
counts = list(count_dict.values())
counts.sort(reverse=True)
answer = 0
for count in counts:
k -= count
answer += 1
if k <= 0:
break
return answer
딕셔너리를 사용하여 개수를 세주었다.
다른 사람 풀이
import collections
def solution(k, tangerine):
answer = 0
cnt = collections.Counter(tangerine)
for v in sorted(cnt.values(), reverse = True):
k -= v
answer += 1
if k <= 0:
break
return answer
로직은 동일하나 Counter 클래스로 딕셔너리를 대체하였다.
https://school.programmers.co.kr/learn/courses/30/lessons/138476/solution_groups?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이 2
from collections import Counter
def solution(k, tangerine):
counts = Counter(tangerine).most_common(k)
answer = 0
for size, count in counts:
k -= count
answer += 1
if k <= 0:
break
return answer
Counter 클래스의 most_common 메소드를 사용해보았다.
정리
Counter 클래스에 대해 알게 되어 정리해보았다.
코딩테스트를 위한 Python3 정리
문제를 풀면서 새롭게 알게 되거나, 자주 찾아보거나, 기억할 만한 내용 정리하기 (2024.10.15 ~ 추가중)collectionsCounterfrom collections import Counter 개수를 세주는 Dictionary 형태의 클래스이다. Counter(배
ggungdi-dev.tistory.com
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 미로 탈출 명령어 - Python (1) | 2024.10.16 |
---|---|
[프로그래머스] 뒤에 있는 큰 수 찾기 - Python (2) | 2024.10.15 |
[백준] 2343. 기타 레슨 - C++ (3) | 2024.10.04 |
[백준] 2792. 보석 상자 - C++ (0) | 2024.10.02 |
[Sofeteer] 징검다리 - C++ (1) | 2024.09.05 |