내가푼것
def solution(array, commands):
answer = []
for i in range(len(commands)):
array_i = array[commands[i][0]-1:commands[i][1]]
array_i.sort()
answer.append(array_i[commands[i][2]-1])
return answer
먼저 array를 잘라서 array_i에 넣어준다. array_i를 정렬한뒤 K번째 수를 answer에 넣는다.
다른사람이 푼것
역시.. 코드들이 짧다..
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1], commands))
map의 함수 칸에 lambda를 사용하였다. commands의 x가 들어올때 x[0]과 x[1]을 사용하여 array를 자르고 정렬시킨다.
정렬시킨 list의 K번째의 수를 구한다.
map()
list(map(함수,리스트))
tuple(map(함수,튜플))
리스트의 요소를 지정된 함수로 처리해 주는 함수이다. 원본 리스트를 변경하지 않고 새 리스트를 생성한다.
# map 사용 X
a = [1.2, 2.5, 3.7, 4.6]
for i in range(len(a)):
a[i] = int(a[i])
[1, 2, 3, 4]
# map 사용 O
a = [1.2, 2.5, 3.7, 4.6]
a = list(map(int,a))
[1, 2, 3, 4]
람다(lambda)
lambda 인자 : 표현식
함수를 다른 형태로 표현한 것이다.
def a(x,y):
return x + y
print(a(10,20))
# lambda 함수 사용 후
(lambda x,y : x + y)(10,20)
# map의 함수 칸에 lambda를 사용함
list(map(lambda x:x**2,range(5)))
[0,1,4,9,16]
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 위장 (0) | 2021.07.28 |
---|---|
[프로그래머스] 가운데 글자 가져오기 (0) | 2021.07.28 |
[프로그래머스]프린터 (0) | 2021.07.27 |
[프로그래머스]기능개발 (0) | 2021.07.23 |
[프로그래머스] 완주하지 못한 선수 (1) | 2021.07.17 |