728x90
문제
필요 지식
lambda
문법
lambda 매개변수: 식
예시1
add = lambda x,y : x + y
print(add(2,3)) # 출력 5
x와 y를 받아서 적혀있는 식에 따라서 5를 반환
예시2
numbers = [1, 2, 3, 4, 5]
squared = map(lambda x: x ** 2, numbers)
print(list(squared)) # 출력: [1, 4, 9, 16, 25]
- map을 사용해서 새로운 리스트를 반환함
- numbers 각 요소 x를 제곱 하여 새로운 리스트를 생성하고 squared에 넣는다
문제 풀이
접근방법
- n과 가까운 수를 리스트에서 찾으려면 numlist 각 요소(x) 에서 n을 빼서 차이를 확인하면됨.
list의 각 요소를 확인해서 하나씩 빼려면 lambda가 편함, 새로운 배열로 반환하지 않아도 원래 배열로 해결할 수 있기 때문에 map은 사용하지 않는다)
- 단, 음수가 나올 수 있기 때문에 절대값을 찾아야함
- 만약 절대값이 같은 경우가 있다면 n에서 numlist 각 요소를 뺀 다음, 그 값이 작은 것을 먼저 넣으면 됨(요소중 더 큰 수는 n-x를 하게될때 큰수가 x여서 음수가 나올 수 밖에 없다)
- lambda를 사용하기 때문에 key를 사용하여 key 순서대로 소팅 하면 됨
코드 작성
def solution(numlist, n):
result = sorted(numlist,key = lambda x : (abs(x-n), n-x))
return result
# 1. sorted를 사용하여 numlist를 정렬함, 단 key를 기준으로 정렬함
# 2. key란 무엇인가
# 2-1. lambda를 사용
# 2-1-1. numlist의 각 요소는 x임
# 2-1-2. 그 x는 절대값 x-n의 절대값을 기준으로 정렬(n과 가까운 순으로 정렬된다)
# 2-1-3. 만약 그 값이 겹친다면 다음 식(n-x)을 실행함
# 3. 그 결과를 result에 할당한다
반응형
'coding test' 카테고리의 다른 글
프로그래머스 A로 B만들기 (0) | 2023.06.15 |
---|---|
프로그래머스 치킨쿠폰 (0) | 2023.06.15 |
프로그래머스 안전지대 (0) | 2023.06.15 |
유한소수 판별하기 (0) | 2023.06.15 |
프로그래머스 삼각형의 완성 (2) (0) | 2023.06.15 |