
append 메서드, sorted() 함수, 리스트 슬라이싱에 대한 개념이 필요한 문제.
array와 commands가 주어진다.
array= [1, 5, 2, 6, 3, 7, 4]
commands= (a, b, c)
-> array의 a번 부터 b번 까지의 숫자를 가져온 뒤 c번째 숫자를 가져오라는 뜻이다.
array가 [1, 5, 2, 6, 3, 7, 4]이고 commands가 (2, 5, 3)이라면 답은 5다.
이를 슬라이싱 개념으로 바꿔서 절차를 설명하면 다음과 같다.
1. array[a-1: b] -> a번째 숫자무터 b번째 숫자 바로 전 까지 가져온다.
2. sorted(array[a-1: b]) -> 해당 숫자들을 정렬한다.
3. sorted(array[a-1: b])[c-1] -> 정렬된 숫자의 c번째 숫자를 가져온다.
위 과정을 for문으로 옮기면 답이 나온다.
def solution(array, commands):
answer = []
for com in commands:
# 이 부분이 핵심이다. 슬라이싱 정리와 번갈아가며 이해하라.
answer.append(sorted(array[com[0]-1:com[1]])[com[2]-1])
return answer
commands 속에 조건이 여러개 들어있어 살짝 당황했으나, 오히려 그 덕분에 for문으로 수월하게 풀어낼 수 있었다.
commands 조건 속 고정된 위치에 고정된 역할의 조건이 배정되어 있으니 리스트 슬라이싱으로 각각의 조건을 따르는 값들을 append할 수 있었다.