문제 url: https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=python3
def solution(array, commands):
answer = []
for com in commands:
arr = array[com[0]-1:com[1]]
arr.sort()
answer.append(arr[com[2]-1])
return answer
def solution(array, commands):
return list(map(lambda x:sorted(array[x[0]-1:x[1]])[x[2]-1,commands))
2번째 코드는 프롷그래머스 다른 사람의 코드를 가져온 것이며 파이썬의 특성상 한줄로도 표현이 가능하다.
lambda 표현식
익명 함수로, def로 정의하지 않고 이름없는 함수를 만든다. 함수를 한 번만 사용할 경우 일회용으로 쓰고 사라지게 만들어 메모리도 효율적이고 시간도 절약할 수 있으며 코드도 간결해진다!
def plus(x,y):
return x+y
lambda x,y: x+y
위 두 코드는 같은 것을 뜻한다.
map()은 리스트의 요소를 각각 처리하므로 lambda의 반환값도 요소여야 한다.
a = [1,2,3,4,5]
print(list(map(lambda x: x**2, a)))
[1,4,9,16,25]
반복문은 쓸 수 없고 간편 조건문만 가능하며 elif를 사용할 수 없다. (중첩 if else문은 lambda로 사용하지 않는 것이 가독성이 좋다!)
lambda score: 'A' if score >=90 else 'B' if score >= 80 else 'C' if score >=70 else 'F'
출처 url: https://velog.io/@yunhlim/Python-%EB%9E%8C%EB%8B%A4lambda-%ED%91%9C%ED%98%84%EC%8B%9D
'Algorithm > Problems' 카테고리의 다른 글
[프로그래머스] 폰켓몬 python (0) | 2022.10.26 |
---|---|
[프로그래머스] 완주하지 못한 선수 (0) | 2022.10.26 |
[프로그래머스] 체육복 (탐욕법 Greedy) (0) | 2022.08.16 |
[백준] 2675번 문자열 반복 (0) | 2022.08.11 |
[프로그래머스] 타겟 넘버 (DFS/BFS) (0) | 2022.08.02 |