Algorithm/Problems

[프로그래머스] K번째 수

공부좀하시졍 2022. 8. 21. 19:04

문제 url: https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

[Python] 람다(lambda) 표현식

파이썬 람다 표현식, 중첩 조건문 사용법

velog.io