728x90
반응형
SMALL
Programmers 레벨 0_코딩테스트 입문 문제 풀이
https://school.programmers.co.kr/learn/challenges/beginner?order=recent&page=1
코딩테스트 입문 | 프로그래머스 스쿨
코딩테스트에 처음 도전하는 사람들을 위한 입문 문제 모음. 쉬운 문제부터 하나씩 도전해 보면서 코딩테스트에 자신감도 붙이고 문제 해결 능력을 키워보세요!
school.programmers.co.kr
풀이 날짜 : 2023-09-29 & 10-04
소요 시간 : 60min → 15min
문제 설명
정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.
나의 풀이
def solution(numlist, n):
gap = [abs(i-n) for i in numlist]
answer = []
for i in sorted(gap) :
for a in sorted(numlist, reverse=True) :
if i == abs(a-n) :
answer.append(a)
numlist.remove(a)
return answer
다른 풀이
def solution(numlist, n):
answer = sorted(numlist,key = lambda x : (abs(x-n), n-x))
return answer
key에 요소를 리스트 혹은 튜플로 두 개 이상 줄 수 있다. 이 경우 앞에 값이 같을 때 뒤의 값을 이용해서 나열한다. 요소 하나이고 값이 같을 때는 먼저 처리된 수가 먼저 나열되는 것 같다(인덱스가 작은 것이).
def solution(numlist, n):
return sorted(numlist,key = lambda x: [abs(x-n),-x])
def solution(numlist, n):
# num -> (abs(n-num), -num)
numlist = [(abs(n-num), -num) for num in numlist]
# 첫 번째 요소를 기준으로 오름차순 정렬 and 두 번째 요소를 기준으로 내림차순 정렬
numlist.sort()
# 두 번쨰 요소만 반환
return [-num for _, num in numlist]
728x90
반응형
LIST
'Coding Study > Programmers (Python)' 카테고리의 다른 글
[프로그래머스/파이썬] Lv.0 안전지대 (80') + 힌트 (1) | 2023.10.04 |
---|---|
[프로그래머스/파이썬] Lv.0 OX 퀴즈 (10') (1) | 2023.10.04 |
[프로그래머스/파이썬] Lv.0 문자열 밀기 (8') (0) | 2023.09.29 |
[프로그래머스/파이썬] Lv.0 저주의 숫자 3 (19') (0) | 2023.09.29 |
[프로그래머스/파이썬] Lv.0 유한소수 판별하기 (63') (0) | 2023.09.29 |