지금까지 풀어온 다른 문제들과는 달리 머릿속에서 어떻게 풀어야 할지 딱 떠오르는 답이었다.
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
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 가운데 글자 가져오기> Level 1 - 파이썬 (0) | 2020.10.25 |
---|---|
<프로그래머스 문제풀이: 2016년> Level1 - 파이썬 (0) | 2020.10.22 |
<프로그래머스 문제풀이: 모의고사> Level 1 - 파이썬 (0) | 2020.10.21 |
<프로그래머스 문제풀이: 완주하지 못한 선수> Level 1 - 파이썬 (0) | 2020.10.21 |
<프로그래머스 문제풀이: 크레인 인형뽑기 게임> Level 1 - 파이썬 (0) | 2020.10.18 |