๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test Practice

[Coding Test Practice] ๊ฐ€์žฅํฐ์ˆ˜ ํŒŒ์ด์ฌ

by Whiimsy 2021. 10. 21.

๐Ÿฅ ๋งํฌ

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

 

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

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

programmers.co.kr

 

๐Ÿฅ ์ ‘๊ทผ

์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š์•„์•ผ ํ•จ.

์ŠคํŠธ๋ง ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ๊ฒฝ์šฐ "30" ์ด "3" ๋ณด๋‹ค ๋จผ์ € ๋‚˜์˜ค๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ

 

๐Ÿฅ ์ฝ”๋“œ

def solution(numbers):
    numbers_str = list(map(str, numbers))              # numbers ๋ฐฐ์—ด์˜ ์ˆซ์ž๋“ค์„ string์œผ๋กœ ๋ณ€ํ™˜ 
    
    # ์—ฌ๊ธฐ์„œ ๊ทธ๋ƒฅ numbers_str์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด๋ฒ„๋ฆฌ๋ฉด 2๋ฒˆ์งธ ์ž…์ถœ๋ ฅ ์˜ˆ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค
    # ["9","5","34","3","30"] ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ["9","5","34","30","3"] ๋กœ "30"์ด "3"๋ณด๋‹ค ๋จผ์ € ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค
    # ๋”ฐ๋ผ์„œ sort์˜ key๊ฐ’(์ •๋ ฌ ๊ธฐ์ค€)์œผ๋กœ lambda๋ฅผ ํ™œ์šฉํ•ด ๊ฐ ์›์†Œ๋ฅผ ์›๋ž˜๊ฐ’์„ ์„ธ๋ฒˆ ๋ฐ˜๋ณตํ•œ ๊ฐ’์œผ๋กœ ์ง€์ •ํ•ด์ค€๋‹ค
    numbers_str.sort(key = lambda x : x*3, reverse = True)
    # "999", "555", "343434", "303030", "333" ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋˜๋ฉฐ ๋ฌธ์ž์—ด ํฌ๊ธฐ ๋น„๊ต์˜ ๊ฒฝ์šฐ ASKII์ฝ”๋“œ๋กœ ๋น„๊ต๋˜๊ธฐ ๋•Œ๋ฌธ์—
    # "333"์ด "303030"๋ณด๋‹ค ๋จผ์ € ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
    
    # ์ฃผ์–ด์ง„ numbers์— 0์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ numbers_str ๋ฐฐ์—ด์„ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ "000"์ด ๋ฆฌํ„ด๋  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ
    # numbers_str ๋ฐฐ์—ด์„ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๊ฐ’์„ int๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๊ณ  "000" -> 0
    # ๋ฆฌํ„ด๊ฐ’์˜ ํ˜•์‹์ด str์ด์—ฌ์•ผํ•˜๋ฏ€๋กœ ๋‹ค์‹œ str๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค 0 -> "0"
    return str(int(''.join(numbers_str)))

 

 

๐Ÿฅ ํ›„๊ธฐ

์ˆœ์—ด์„ ์ด์šฉํ•˜๋ ค ํ–ˆ๋Š”๋ฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. ใ… 

์•„๋ฌด๋ž˜๋„ numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.๋ผ๋Š”  ๋ผ๋Š” ์ œํ•œ ์‚ฌํ•ญ์ด ์žˆ๋‹ค ๋ณด๋‹ˆ..

๊ทธ๋ž˜๋„ ์ˆœ์—ด์„ ์ด์šฉํ•ด ์‚ฝ์งˆํ•˜๋ฉฐ ํŠœํ”Œ๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์„ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋“ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

๋จผ์ €,

 

ํŠœํ”Œ์˜ ์›์†Œ๋“ค์ด ์ŠคํŠธ๋ง์ผ ๊ฒฝ์šฐ :: ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„ 

tuple.join()

 

๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์ด ์ŠคํŠธ๋ง์ผ ๊ฒฝ์šฐ :: ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„ 

"".join(input)
# ๋งจ ์•ž์˜ ""๋Š” input์„ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋งŒ๋“ค ๋•Œ, ์›์†Œ ์‚ฌ์ด์‚ฌ์ด์— ๋„ฃ์„ ๋ฌธ์ž๋ฅผ ์˜๋ฏธ

 

๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๋“ค์ด ์ŠคํŠธ๋ง์ด ์•„๋‹ ๊ฒฝ์šฐ :: ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ง์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„ 

"".join(map(str, input))
# input์˜ ๊ฐ ์›์†Œ๋“ค์„ string์œผ๋กœ ๋งคํ•‘์‹œ์ผœ์ค€๋‹ค๋Š” ์˜๋ฏธ

 

๋˜, sort ํ•  ๋•Œ key ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ + reverse = True๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ lambda ์‚ฌ์šฉ๋ฒ•๋„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

lambda๋Š” ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด lambda (๋งค๊ฐœ๋ณ€์ˆ˜) : (๋ฆฌํ„ด ๊ฐ’)์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.