[프로그래머스](python)(해시) K 번째 수

berry ·2021년 4월 22일
0

Algorithm

목록 보기
1/77
post-thumbnail

문제

내 풀이

def solution(array, commands):
    answer = []

    for command in commands:
        i, j, k = command[0], command[1], command[2]
        array_slice = array[i-1:j]
        array_slice.sort()
        answer.append(array_slice[k-1])

    return answer 
    

+++
1) commands가 2차원이므로 command로 리스트 하나씩 나눠주고
array에서 i-1:j 까지 slice한다.
2) slice 후 정렬 .sort()
3) 다시 slice


다른 풀이

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

+++
(lambda 잘 몰라서 한 줄 보고 현타)

map과 lambda
1. map(function, list)
function: sorted([array[x[0]-1:x[1]])[x[2]-1]
list: commands

1) commands에서 x[0], x[1], x[2]를 받는다 (i,j,k)
2) array[x[0]-1]부터 array[x[1]]까지 slice
3) sorted로 2)를 정렬
4) 3)을 [x[2]-1]로 다시 slice

2. lambda
예로 이해하는 게 쉽다.
def ccc(x,y):
x=1
y=2
return x%y

lambda 이용하여 한 줄로 만들면

(lambda x,y:x%y)(1,2)
세상에

pythonic이란게 이런 코드를 보고 말하는 거구나. 🥶 쏘 쿨

profile
Engineer

0개의 댓글