알고리즘/프로그래머스
[프로그래머스 | Lv2] 귤 고르기 (Python)
sssbin
2023. 1. 31. 14:39
https://school.programmers.co.kr/learn/courses/30/lessons/138476
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
# 프로그래머스 138476: 귤 고르기
def solution(k, tangerine):
dic = {}
for i in tangerine:
try: dic[i] += 1
except: dic[i] = 1
dic = dict(sorted(dic.items(), key=lambda x:x[1]))
n = len(tangerine) - k
cnt = len(dic)
i = 0
for key in dic:
i += dic[key]
if i < n:
cnt -= 1
elif i == n:
return cnt - 1
else:
return cnt
테스트 1 〉 | 통과 (14.81ms, 13.2MB) |
테스트 2 〉 | 통과 (11.53ms, 13.2MB) |
테스트 3 〉 | 통과 (10.17ms, 13.4MB) |
테스트 4 〉 | 통과 (12.05ms, 13MB) |
테스트 5 〉 | 통과 (16.84ms, 11.2MB) |
테스트 6 〉 | 통과 (16.76ms, 11.4MB) |
테스트 7 〉 | 통과 (11.87ms, 12.2MB) |
테스트 8 〉 | 통과 (9.55ms, 11.8MB) |
테스트 9 〉 | 통과 (12.12ms, 11.6MB) |
테스트 10 〉 | 통과 (14.29ms, 12.8MB) |
테스트 11 〉 | 통과 (0.02ms, 10.1MB) |
테스트 12 〉 | 통과 (0.01ms, 10.1MB) |
테스트 13 〉 | 통과 (0.01ms, 10.3MB) |
테스트 14 〉 | 통과 (0.01ms, 10.2MB) |
테스트 15 〉 | 통과 (0.01ms, 9.98MB) |
테스트 16 〉 | 통과 (0.01ms, 10.1MB) |
테스트 17 〉 | 통과 (0.01ms, 10.2MB) |
테스트 18 〉 | 통과 (0.01ms, 10.2MB) |
테스트 19 〉 | 통과 (0.01ms, 10.1MB) |
테스트 20 〉 | 통과 (0.02ms, 10.2MB) |
테스트 21 〉 | 통과 (0.23ms, 10.2MB) |
테스트 22 〉 | 통과 (0.73ms, 10.5MB) |
테스트 23 〉 | 통과 (0.56ms, 10.4MB) |
테스트 24 〉 | 통과 (0.78ms, 10.5MB) |
테스트 25 〉 | 통과 (6.42ms, 11.7MB) |
테스트 26 〉 | 통과 (19.90ms, 13.6MB) |
테스트 27 〉 | 통과 (73.72ms, 35.6MB) |
테스트 28 〉 | 통과 (40.32ms, 20.4MB) |
테스트 29 〉 | 통과 (45.85ms, 25.7MB) |
테스트 30 〉 | 통과 (77.48ms, 35.5MB) |
테스트 31 〉 | 통과 (9.89ms, 12.4MB) |
테스트 32 〉 | 통과 (11.69ms, 13.8MB) |
테스트 33 〉 | 통과 (78.43ms, 26.7MB) |
테스트 34 〉 | 통과 (56.12ms, 25.7MB) |
통과는 했지만 좀 지저분하게 풀었는데,, 다들 넘 깔끔하게 풀어서 놀랐다
tangerine의 요소 개수가 저장되어 있는 딕셔너리를 만든 부분 -> collections 모듈의 Counter 클래스로 만들 수 있음
나는 value 값으로 정렬한 딕셔너리를 또 하나 만들었는데 -> 그냥 value 값으로 정렬한 리스트만 있으면 됨
개수 판별하는 부분도 다들 더 깔끔한 방법 써서 푸시던데 생각하기 힘들어서(^^..) 그냥 내가 썼던 알고리즘 거의 그대로 썼다!
# 프로그래머스 138476: 귤 고르기
from collections import Counter
def solution(k, tangerine):
tan = sorted(Counter(tangerine).values())
answer = len(tan)
n = len(tangerine) - k
for i in tan:
if i < n:
answer -= 1
n -= i
elif i == n:
return answer - 1
else:
return answer
테스트 1 〉 | 통과 (5.41ms, 13.1MB) |
테스트 2 〉 | 통과 (9.16ms, 13.2MB) |
테스트 3 〉 | 통과 (9.38ms, 13.5MB) |
테스트 4 〉 | 통과 (6.28ms, 13.1MB) |
테스트 5 〉 | 통과 (4.46ms, 11.2MB) |
테스트 6 〉 | 통과 (5.05ms, 11.3MB) |
테스트 7 〉 | 통과 (5.99ms, 12.6MB) |
테스트 8 〉 | 통과 (10.49ms, 11.8MB) |
테스트 9 〉 | 통과 (4.91ms, 11.6MB) |
테스트 10 〉 | 통과 (6.09ms, 13MB) |
테스트 11 〉 | 통과 (0.04ms, 10.4MB) |
테스트 12 〉 | 통과 (0.03ms, 9.95MB) |
테스트 13 〉 | 통과 (0.02ms, 10.3MB) |
테스트 14 〉 | 통과 (0.02ms, 9.95MB) |
테스트 15 〉 | 통과 (0.03ms, 9.95MB) |
테스트 16 〉 | 통과 (0.02ms, 10.1MB) |
테스트 17 〉 | 통과 (0.02ms, 10.2MB) |
테스트 18 〉 | 통과 (0.02ms, 9.96MB) |
테스트 19 〉 | 통과 (0.03ms, 10.1MB) |
테스트 20 〉 | 통과 (0.02ms, 10.1MB) |
테스트 21 〉 | 통과 (0.07ms, 9.9MB) |
테스트 22 〉 | 통과 (0.15ms, 10.1MB) |
테스트 23 〉 | 통과 (0.19ms, 10.2MB) |
테스트 24 〉 | 통과 (0.19ms, 10.4MB) |
테스트 25 〉 | 통과 (2.01ms, 11MB) |
테스트 26 〉 | 통과 (3.41ms, 11.5MB) |
테스트 27 〉 | 통과 (14.67ms, 21.8MB) |
테스트 28 〉 | 통과 (14.78ms, 16.2MB) |
테스트 29 〉 | 통과 (14.21ms, 17.9MB) |
테스트 30 〉 | 통과 (17.43ms, 21.9MB) |
테스트 31 〉 | 통과 (6.27ms, 12.7MB) |
테스트 32 〉 | 통과 (6.15ms, 13.6MB) |
테스트 33 〉 | 통과 (15.97ms, 18.1MB) |
테스트 34 〉 | 통과 (19.05ms, 17.9MB) |
ㅠㅠ