https://school.programmers.co.kr/learn/courses/30/lessons/42746
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
2026.04.03
์ฒ์์ permutationํ๋ค๊ฐ numbers ํฌ๊ธฐ๋ณด๊ณ ์์ฐจ ์ถ์๋ค..
๊ทธ๋์ ์ด๋ป๊ฒ ํ์ง ํ๋ค๊ฐ,, cmt_to_key ํจ์๋ ๊ธฐ์ต ๋ชปํ ๊ฒ ๊ฐ์์ *3์ ํด๋ฒ๋ฆผ
def solution(numbers):
# permutation์ ํ๊ธฐ์ numbers ๋ฐฐ์ด์ด ๋๋ฌด ํฌ๋ค
# ์ต์ ํํด์ ํด์ผ ํจ
# ๋๊ฐ ํฌ๋ค๊ณ ์ฌ๊ธธ๊น? ์ฒซ๋ฒ์งธ ๋์ค๋ ์ซ์๊ฐ ํฐ ์ ๊ฐ ์์ผ๋ก ๊ฐ์ผ ํจ
# ๊ทผ๋ฐ ์ฃผ์ํด์ผ ํ ์ , 0์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ์ ๊ทธ๋ ์ง ์์ ์ซ์๊ฐ ์์ ๋, 10 vs 1 ์ด๋ผ๋ฉด -> 1์ด ๋จผ์ ์ค๋๊ฒ ๋ง์
numbers_str = [str(num) for num in numbers]
numbers_str.sort(key=lambda x: (x*3), reverse=True)
answer = ''.join(numbers_str)
return answer
๋ ๊ฐ๋จํ๊ฒ ํํ๋ ๊ฐ๋ฅํด
-1์ด๋ฉด ์, 1์ด๋ฉด ๋ค, 0์ด๋ฉด ๊ฐ์์ ์๋ฏธ
from functools import cmp_to_key
def solution(numbers):
# permutation์ ํ๊ธฐ์ numbers ๋ฐฐ์ด์ด ๋๋ฌด ํฌ๋ค
# ์ต์ ํํด์ ํด์ผ ํจ
# ๋๊ฐ ํฌ๋ค๊ณ ์ฌ๊ธธ๊น? ์ฒซ๋ฒ์งธ ๋์ค๋ ์ซ์๊ฐ ํฐ ์ ๊ฐ ์์ผ๋ก ๊ฐ์ผ ํจ
# ๊ทผ๋ฐ ์ฃผ์ํด์ผ ํ ์ , 0์ด ๋ค์ด๊ฐ ๊ฒฝ์ฐ์ ๊ทธ๋ ์ง ์์ ์ซ์๊ฐ ์์ ๋, 10 vs 1 ์ด๋ผ๋ฉด -> 1์ด ๋จผ์ ์ค๋๊ฒ ๋ง์
numbers_str = [str(num) for num in numbers]
numbers_str.sort(key=cmp_to_key(lambda a,b: (b+a>a+b)-(b+a<a+b)))
answer = ''.join(numbers_str)
return answer
์๋ 1 >> ์๊ฐ ์ด๊ณผ (๋ฒ๋ธ์ ๋ ฌ) >>> 60
def sort(str_numbers):
for i in range(len(str_numbers)):
for j in range(i+1, len(str_numbers)):
c_1 = str_numbers[i] + str_numbers[j]
c_2 = str_numbers[j] + str_numbers[i]
if c_1 < c_2: # SWAP
str_numbers[i], str_numbers[j] = str_numbers[j], str_numbers[i]
def solution(numbers):
str_numbers = [str(num) for num in numbers]
sort(str_numbers)
answer = ''
for str_n in str_numbers:
answer+=str_n
return answer
์๋ 2 >> cmp_to_key
cmp_to_key๋ ํ์ด์ฌ์์ ์ ๋ ฌํ ๋ ๊ธฐ์กด์ ๋น๊ต ํจ์(comparator)๋ฅผ ํค ํจ์(key function)๋ก ๋ฐ๊ฟ์ฃผ๋ ๋๊ตฌ
from functools import cmp_to_key
def compare(a, b):
if a + b < b + a:
return 1
elif a + b > b + a:
return -1
else:
return 0
def solution(numbers):
str_numbers = [str(num) for num in numbers]
str_numbers.sort(key=cmp_to_key(compare))
answer = ''.join(str_numbers)
return '0' if answer[0] == '0' else answer'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํ๋ก๊ทธ๋๋จธ์ค Lv2 | ์์ ํ์ | ์นดํซ (0) | 2025.10.11 |
|---|---|
| ํ๋ก๊ทธ๋๋จธ์ค Lv2 | ์์ ํ์ | ์์ ์ฐพ๊ธฐ (0) | 2025.10.11 |
| ํ๋ก๊ทธ๋๋จธ์ค | dfs/bfs | ํ๊ฒ ๋๋ฒ (0) | 2025.10.09 |
| ํ๋ก๊ทธ๋๋จธ์ค Lv3 | dfs/bfs | ์ฌํ๊ฒฝ๋ก (0) | 2025.10.09 |
| ํ๋ก๊ทธ๋๋จธ์ค | dfs/bfs | ๋จ์ด๋ณํ (0) | 2025.10.09 |