문제 풀이
def solution(array, commands):
answer = []
# 시작 인덱스, 마지막 인덱스, 그리고 K번째 숫자를 commands에서 가져온다.
for startidx, endidx, numK in commands:
# 시작 인덱스와 K번째 숫자에 -1을 하는 이유는 배열 인덱스가 0부터 시작하기 때문이다.
# 마지막 인덱스에 -1을 하지 않는 이유는 '미만'처리가 되어 마지막 인덱스가 포함되지 않기 때문이다. 즉 -1이 이미 되어있다.
# array의 [시작 인덱스 - 1 부터(:) 마지막 인덱스] 까지 가져온 후 정렬하여 sorted_array에 넣는다.
sorted_array = sorted(array[startidx - 1:endidx])
# K번째 숫자는 numK-1 위치에 있다. 이를 answer에 집어넣으면 끝.
answer.append(sorted_array[numK - 1])
위의 코드는 직접 코딩한 코드이고, 다른 사람의 풀이 중 어마어마한 것이 있어 가져와본다.
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
1. map(lambda x : sorted(array[x[0] - 1 : x[1]])[x[2] - 1], commands)
- 람다 x는 commands이다.
- x에 관하여, array에서 x[0]-1 (startidx) 부터(:) x[1] (endidx) 까지 가져온 후 정렬.
- 여기에서 [x[2]-1] (numK)를 가져온다.
2. return list( ~ )
- 가져온 [x[2]-1] (numK) 들을 리스트화 하여 반환한다.
문제 링크
programmers.co.kr/learn/courses/30/lessons/42748?language=python3
코딩테스트 연습 - K번째수
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
'Python > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [Python] H-Index (0) | 2020.12.09 |
---|---|
[프로그래머스] [Python] 가장 큰 수 (0) | 2020.12.07 |
[프로그래머스] [Python] 이중우선순위큐 (0) | 2020.12.02 |
[프로그래머스] [Python] 디스크 컨트롤러 (0) | 2020.12.02 |
[프로그래머스] [Python] 더 맵게 (0) | 2020.11.29 |