코테/프로그래머스 level0
프로그래머스 level0 [특이한 정렬] 파이썬
동 캄
2023. 3. 5. 20:20
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120880
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#프로그래머스 특이한 정렬
def solution(numlist, n):
answer = []
numlist.sort(key=lambda x: (abs(n-x),(-x)))
answer=list(map(int,numlist))
return answer
파이썬 내장 함수를 이용하면 문제를 쉽게 해결할 수 있다. 하지만, 코딩 연습인 만큼 내장함수를 최대한 이용하지 않고 문제를 해결해보면...
#프로그래머스 특이한 정렬
def solution(numlist, n):
answer = []
numlist.sort()
length=len(numlist)
diff=100000
for i in range(length):
if diff>=abs(n-numlist[i]):
diff=abs(n-numlist[i])
ind=i
answer.append(numlist[ind])
front= ind-1
back = ind+1
while front>=0 and back < length:
f_diff=n-numlist[front]
b_diff=numlist[back]-n
if b_diff<=f_diff:
answer.append(numlist[back])
back+=1
else:
answer.append(numlist[front])
front-=1
while front>=0:
answer.append(numlist[front])
front-=1
while back<length:
answer.append(numlist[back])
back+=1
return answer
다음과 같다. 우선, 리스트를 정렬 후, n과 제일 가까운 인덱스를 찾고, 그리디하게 앞 뒤로 탐색하면서 answer에 추가하면 된다.
반응형