๐Ÿงฉ Problem Solving/[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] 42746 ๊ฐ€์žฅ ํฐ ์ˆ˜ (python ํŒŒ์ด์ฌ)

์ œ๋ด‰์•„ 2023. 8. 25. 01:14
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


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


์•„์ด๋””์–ด

์ผ๋‹จ ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ•œ ํฌ๊ฒŒ ๋งŒ๋“œ๋Š” ์›๋ฆฌ๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.

3, 32, 34๋ฅผ ๋น„๊ตํ•ด ๋ณด๋ฉด 34 > 3(33) > 32 ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•ด์•ผ ํ•œ๋‹ค.

๋˜ 32์™€ 332๋ฅผ ๋น„๊ตํ•˜๋ฉด 332๊ฐ€ 32๋ณด๋‹ค ์•ž์— ์™€์•ผ ๋œ๋‹ค. 

34์™€ 343 ๋ฅผ ๋น„๊ตํ•ด ๋ณด๋ฉด 34๊ฐ€ 343๋ณด๋‹ค ์•ž์— ์™€์•ผ ๋œ๋‹ค. (34343 > 34334)

 

์ด๊ฑธ ํ’€์–ด์„œ ์„ค๋ช…ํ•˜๋ฉด 34์™€ 343์€

34 -> 34343434...

343 -> 343343343... 

์ด๋Ÿฐ ์‹์œผ๋กœ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด ๋ฌธ์ œ์˜ ํ‚ค ํฌ์ธํŠธ๋Š” ์›์†Œ์˜ ํฌ๊ธฐ ์ œํ•œ์ด๋‹ค. ๋ฌธ์ œ์—์„œ numbers์˜ ์›์†Œ์˜ ํฌ๊ธฐ๋Š” 0 ~ 1000์ด๋‹ค. 

๊ทธ๋‹ˆ๊นŒ 

34 -> 34343434...

343 -> 343343343... 

๋ฐ˜๋ณตํ•œ ์ˆซ์ž์˜ ์•ž 4์ž๋ฆฌ๋งŒ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค.


์ „์ฒด ์ฝ”๋“œ

def solution(numbers):
    neo_numbers = numbers
    
    neo_numbers.sort(key = lambda x : (str(x) * 4)[:4], reverse = True)
    
    answer = "".join(map(str, neo_numbers))
    
    if int(answer) == 0:
        answer = '0'
    
    return answer

์ฝ”๋“œ ์„ค๋ช…

neo_numbers.sort(key = lambda x : (str(x) * 4)[:4], reverse = True)

ํŒŒ์ด์ฌ์˜ ์‚ฌ๊ธฐ์„ฑ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

sort๋ผ๋Š” ํ•จ์ˆ˜๋Š” 'key ='๋ฅผ ์ด์šฉํ•ด์„œ ์ •๋ ฌ ๊ธฐ์ค€์„ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ lambda๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ ฌ ๊ธฐ์ค€์„ ์ปค์Šคํ…€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ •๋ ฌ๊ธฐ์ค€์„ ์ˆซ์ž๋ฅผ 4๋ฒˆ ์ •๋„ ๋ฐ˜๋ณต์‹œํ‚ค๊ณ  ์Šฌ๋ผ์ด์‹ฑ์œผ๋กœ 4์ž๋ฆฌ๊นŒ์ง€ ์ž๋ฅธ๋‹ค. ์ด ๊ฐ’๋“ค์„ ๋น„๊ตํ•ด์„œ ์›๋ž˜ ์žˆ๋Š” ๊ฐ’๋“ค์„ ์ •๋ ฌํ•ด ์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ, reverse = True๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค. 

 

answer = "".join(map(str, neo_numbers))
    
if int(answer) == 0:
	answer = '0'

 

์ •๋‹ต ์ถœ๋ ฅ์€ joinํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ •๋‹ต์ด 00 ๊ฐ™์€ ๊ฒฝ์šฐ, 000 -> 0์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๋‹ˆ๊นŒ if๋ฌธ์„ ์ถ”๊ฐ€ํ•ด ์ค€๋‹ค.