# 내 풀이
# 최초 테스트 케이스는 통과했지만 [454, 45] 같은 경우는 통과하지 못해서 실패했다. 검색해서 확인해보니 *3을 곱해서 이런 케이스를 걸러내는 작업을 한다.
def solution(array, commands):
return [sorted(array[i-1:j])[k-1] for i,j,k in commands]
# 참고 풀이
# int 인 채로 놔두지 않고, str로 변환한 후에 작업을 시작한다: 문자열 비교와 정수 비교의 비교 방법 차이가 있기 때문이다.
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
# 참고 풀이2
# key = functools.cmp_to_key(comparator) 숙지
# a와 b가 int라면 당연히 같겠지만, a와 b가 str일 때를 고려한 설계
import functools
def comparator(a,b):
t1 = a+b
t2 = b+a
return (int(t1) > int(t2)) - (int(t1) < int(t2)) # t1이 크다면 1 // t2가 크다면 -1 // 같으면 0
def solution(numbers):
n = [str(x) for x in numbers]
n = sorted(n, key=functools.cmp_to_key(comparator),reverse=True)
answer = str(int(''.join(n)))
return answer
# 내 풀이
def solution(citations):
answer = 0
citations.sort()
n = len(citations)
for i in range(n):
answer = max(answer, min(citations[i], n - i))
return answer
# 참고풀이
# enumerate start 변수 지정할 수 있다. 1씩 증가하는 특정 변수로 활용하기 좋겠다.
def solution(citations):
citations.sort(reverse=True)
answer = max(map(min, enumerate(citations, start=1)))
return answer
# 참고풀이2
# l-i 는 점점 작아질 수 밖에 없기 때문에, 조건을 가장 먼저 통과한 값이 최댓값이 됨!
def solution(citations):
citations = sorted(citations)
l = len(citations)
for i in range(l):
if citations[i] >= l-i:
return l-i
return 0
'알고리즘 문제풀이 > 프로그래머스 고득점 Kit' 카테고리의 다른 글
[프로그래머스 고득점 Kit - 해시] 1. 폰켓몬 (0) | 2023.09.29 |
---|---|
[프로그래머스] 고득점 Kit - 완전 탐색 (0) | 2023.06.22 |
[프로그래머스] 고득점 Kit - 힙 (0) | 2023.06.15 |
[프로그래머스] 고득점 Kit - 스택/큐 (1) | 2023.06.13 |
[프로그래머스] 고득점 Kit - 해시 (2) | 2023.06.04 |
댓글