๐Ÿ—๏ธ Algorithm/โฌ› ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] [Python] Level2_์ •๋ ฌ_๊ฐ€์žฅ ํฐ ์ˆ˜

Dbswnstjd 2022. 2. 25. 20:32

https://programmers.co.kr/learn/courses/30/lessons/42746

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฐ€์žฅ ํฐ ์ˆ˜

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ

programmers.co.kr

ํ’€์ด

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ •๋ ฌ - ๊ฐ€์žฅ ํฐ ์ˆ˜ 
def solution(num):
    num = list(map(str, num)) 
    num.sort(key = lambda x : x*3, reverse = True)
    return str(int(''.join(num)))

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ์ž˜ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ํ’€์ด๋ฅผ ๋ดค๋Š”๋ฐ๋„ ์ œ๋Œ€๋กœ ์ดํ•ด ํ•˜์ง€ ๋ชป ํ•œ ๋ฌธ์ œ์˜€๋‹ค.

 

๋ฌธ์ œํ’€์ด

  • intํ˜•์˜ list๋ฅผ map์„ ์‚ฌ์šฉํ•˜์—ฌ string์œผ๋กœ ์น˜ํ™˜ํ•œ ๋’ค, list๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • ๋ณ€ํ™˜๋œ num์„ sort()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ key ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ •๋ ฌํ•œ๋‹ค.
    lambda x : x * 3์€ num ์ธ์ž ๊ฐ๊ฐ์˜ ๋ฌธ์ž์—ด์„ 3๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
    • x * 3์„ ํ•˜๋Š” ์ด์œ ?
      • num์˜ ์ธ์ˆ˜๊ฐ’์ด 1000 ์ดํ•˜์ด๋ฏ€๋กœ 3์ž๋ฆฌ์ˆ˜๋กœ ๋งž์ถ˜ ๋’ค, ๋น„๊ตํ•˜๊ฒ ๋‹ค๋Š” ๋œป.
  • ๋ฌธ์ž์—ด ๋น„๊ต๋Š” ASCII ๊ฐ’์œผ๋กœ ์น˜ํ™˜๋˜์–ด ์ •๋ ฌ๋œ๋‹ค. ๋”ฐ๋ผ์„œ 666, 101010, 222์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ๋น„๊ตํ•œ๋‹ค.
    • 6 = 86, 1 = 81, 2 = 82 ์ด๋ฏ€๋กœ 6 > 2 > 1์ˆœ์œผ๋กœ ํฌ๋‹ค.
    • sort()์˜ ๊ธฐ๋ณธ ์ •๋ ฌ ๊ธฐ์ค€์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‹ค. reverse = True ์ „์˜ sort๋œ ๊ฒฐ๊ณผ๊ฐ’์€ 10, 2, 6์ด๋‹ค.
    • ์ด๋ฅผ reverse = True๋ฅผ ํ†ตํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ ํ•ด์ฃผ๋ฉด 6,2,10์ด ๋œ๋‹ค. ์ด๊ฒƒ์„ ‘‘.join(num)์„ ํ†ตํ•ด ๋ฌธ์ž์—ด์„ ํ•ฉ์ณ์ฃผ๋ฉด ๋œ๋‹ค.
    • int๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค, ๋˜ str๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์ด์œ ?
      • ๋ชจ๋“  ๊ฐ’์ด 0์ผ ๋•Œ(์ฆ‰, ‘000’์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด) int๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค, ๋‹ค์‹œ str๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.