https://school.programmers.co.kr/learn/courses/30/lessons/120880
๋ฌธ์
๋ฌธ์ ์ค๋ช
์ ์ n์ ๊ธฐ์ค์ผ๋ก n๊ณผ ๊ฐ๊น์ด ์๋ถํฐ ์ ๋ ฌํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ n์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด ๋ ํฐ ์๋ฅผ ์์ ์ค๋๋ก ๋ฐฐ์นํฉ๋๋ค. ์ ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด numlist์ ์ ์ n์ด ์ฃผ์ด์ง ๋ numlist์ ์์๋ฅผ n์ผ๋ก๋ถํฐ ๊ฐ๊น์ด ์์๋๋ก ์ ๋ ฌํ ๋ฐฐ์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ n ≤ 10,000
- 1 ≤ numlist์ ์์ ≤ 10,000
- 1 ≤ numlist์ ๊ธธ์ด ≤ 100
- numlist๋ ์ค๋ณต๋ ์์๋ฅผ ๊ฐ์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
numlist | n | result |
[1, 2, 3, 4, 5, 6] | 4 | [4, 5, 3, 6, 2, 1] |
[10000,20,36,47,40,6,10,7000] | 30 | [36, 40, 20, 47, 10, 6, 7000, 10000] |
์์ค ์ฝ๋
# 1
def solution(numlist, n):
# Key = ์ซ์ / Value = ์ฐจ์ด
num_diff = {}
for num in numlist:
num_diff[num] = abs(num-n)
rank = dict(sorted(num_diff.items(), key=lambda x:(x[1],-x[0])))
return list(rank.keys())
ํ์ด # 1
- num_diff ๋ผ๋ ๋์
๋๋ฆฌ ์์ฑ
- Key๊ฐ์ numlist์ ์ซ์ / Value๊ฐ์ numlist ์ซ์์ n์ ์ฐจ์ด ์ ๋ ฅ
- rank๋ผ๋ ๋์
๋๋ฆฌ ์์ฑ
- num_diff์ Value(= numlist ์ซ์์ n์ ์ฐจ์ด) ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ → x[1]
- Value๊ฐ ๊ฐ๋ค๋ฉด Key๊ฐ ํฐ ๊ฐ ๋จผ์ ์ค๋๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ → -x[0]
- ์ ๋ ฌ๋ rank ๋์ ๋๋ฆฌ์ Key๊ฐ(=numlist์ ์ซ์) ์ถ๋ ฅ
# 2
def solution(numlist, n):
numlist.sort(key=lambda x:(abs(n-x), -x))
return numlist
ํ์ด #2
- numlist ์ซ์์ n์ ์ฐจ์ด ์ค๋ฆ์ฐจ์ / numlist ์ซ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
- ์ ๋ ฌ๋ numlist ์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ํ์ด๋ '์ฐจ์ด๊ฐ ๋ง๋ค๊ธฐ → ์ฐจ์ด๊ฐ๊ณผ ์ซ์๋ฅผ ๋์ ๋๋ฆฌ์ ๋ฃ๊ธฐ → ์ฐจ์ด๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ → ์ ๋ ฌ๋ ๋์ ๋๋ฆฌ์์ ํค ๊ฐ ์ถ๋ ฅํ๊ธฐ' ์ ๊ณผ์ ์ ๊ฑฐ์น๊ณ ๋ ๋ฒ์งธ ํ์ด๋ '์ฐจ์ด๊ฐ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ'๊ฐ ๋์ด๋ค. ์๋ฆฌ?๋ ๊ฐ์ง๋ง ์ผ๋ง๋ ๊ฐ๊ฒฐํ๊ฒ ํํํ๋์ง์ ๋ฐ๋ผ์ ์ฝ๋๊ฐ ์ข ๋ ๊น๋ํด์ง๋ ๊ฒ ๊ฐ๋ค. ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ด์ผ๊ฒ ๋ค๊ณ 3928490๋ฒ์งธ ๋ค์งํ๋ ์ค์ด๋ค.
'์ฝ๋ฉ ๋ฌธ์ ํ์ด ๐ป > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์ (0) | 2023.12.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (1) | 2023.12.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ์ ์๋ฅผ ๋์ ํ์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2023.12.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 2์ ์์ญ (1) | 2023.11.24 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ์ฃผ์ฌ์ ๊ฒ์ 3 (1) | 2023.11.20 |