[파이썬] 프로그래머스 LV1 K번째 수

청수동햄주먹·2023년 2월 4일
0

파이썬코딩테스트

목록 보기
5/35

프로그래머스 K번째 수
성공률이 비슷한 문제들 중에서는 가장 쉬운 문제였다.

나의 풀이

def solution(array, commands):
    return [sorted(array[x[0]-1:x[1]])[x[2]-1] for x in commands]
  • [ x[2]-1 ] : 인덱스에서는 -1 해줘야 했다. 왜냐면 1부터 시작하는 기수가 인덱스로 주어줬기 때문!
  • array[x[0]-1:x[1]] : 비슷한 이유로 시작하는 인덱스에서 -1 해줘야 했고 끝나는 인덱스는 +1을 할 필요가 없었다

다른 사람의 풀이

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

for룹대신 람다로 쓰는 경우 map()과 함께 쓰인다.

  • map(function, iter)
    • function: 반복하면서 수행할 기능
    • iter: 재료
    • 이 문제의 경우 맵을 사용해서 commands 를 재료로 람다 익명 함수로 iterate 하면서 어레이에서 필요한 부분을 자르고 필요한 부분만 선택해 주었다.
  • lambda
    • 익명 함수를 만들 수 있다
    • 함수 객체를 만들지 않고 사용할 수 있기 때문에 메모리를 절약할 수 있다
  • list()
    • 리스트 객체를 생성 시켜준다

성능 비교

            for-loop                lambda
테스트 1 〉	통과 (0.00ms, 10.2MB)	통과 (0.00ms, 10.2MB)
테스트 2 〉	통과 (0.01ms, 10.3MB)	통과 (0.01ms, 10.1MB)
테스트 3 〉	통과 (0.00ms, 10MB)	    통과 (0.01ms, 9.91MB)
테스트 4 〉	통과 (0.00ms, 10.2MB)	통과 (0.01ms, 9.98MB)
테스트 5 〉	통과 (0.01ms, 10.3MB)	통과 (0.01ms, 10.3MB)
테스트 6 〉	통과 (0.00ms, 10.2MB)	통과 (0.01ms, 10.1MB)
테스트 7 〉	통과 (0.01ms, 10.1MB)	통과 (0.01ms, 10.2MB)
  • 시간은 for룹이 약간 더 적게 걸리고 확실히 람다를 이용한 방식이 공간이 덜 필요했다.
profile
코딩과 사별까지

0개의 댓글