출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

 

지금까지 풀어온 다른 문제들과는 달리 머릿속에서 어떻게 풀어야 할지 딱 떠오르는 답이었다.

def solution(array, commands):
	
    answer = []
    
	for i in range(len(commands)):
		array1 = array[commands[i][0]-1 : commands[i][1]]
		array1.sort()
		answer.append(array1[commands[i][2]-1])
	
    return answer

 

array1이라는 새로운 list를 만든 후, 거기에 [i-1 : j]를 대입시킨다. i-1을 하는 이유는 [i : j]는 i+1 ... j-1, j 까지 나타내지만, 문제에서는 i도 포함하라고 했기 때문에 i-1을 해야 i가 추가된다.

이후 array1을 sort()를 이용해 오름차순으로 정렬하고, answer list에 k번째 숫자를 추가시켜준다. 이를 commands list 안에 있는 모든 list에 대해서 적용시켜주면 된다.

 

 

다른 사람의 풀이

상상도 못한 풀이 방법이었다:

def solution(array, commands):
    return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))

 

 

 

좋아요를 가장 많이 받은 풀이 방법중에 이런 숏코딩이 있었다. map과 lambda를 이용한 숏코딩이었다. lambda는 def와 같은 역할을 하는데, 여기에 map을 이용해서 commands를 매개변수로 넣어준다. commands의 각 원소들을 x에 대입시켜줘야 하는것이 아닌가 하지만, 같은 결과를 출력한다

def solution(array, commands):
    for i in range(len(commands)):
        answer = list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
    return answer