[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] ๊ฐ€์žฅ ํฐ ์ˆ˜

2021. 1. 26. 20:24ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

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

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

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค.

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • numbers์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 100,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • numbers์˜ ์›์†Œ๋Š” 0 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ •๋‹ต์ด ๋„ˆ๋ฌด ํด ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

ํ’€์ด ๊ณผ์ •

์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ฒ˜์Œ์—๋Š” ์ž๋ฆฌ์ˆ˜๋ฅผ ์ตœ๋Œ€๋กœ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์–ด ๊ฒ€์‚ฌํ•˜๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์˜ˆ๋ฅผ๋“ค์–ด 3์ด๋ฉด 3000์œผ๋กœ ๋งŒ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์€ ์ •๋ ฌ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ 1000์ดํ•˜์˜ ์ˆ˜๋“ค์„ 4์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์˜ˆ๋ฅผ ๋“ค์–ด 3์ด๋ฉด 3333, 121 ์ด๋ฉด 1211๋กœ tmp_number์— ์ €์žฅํ•œ ๋‹ค์Œ answer์— str(tmp_number)๋ฅผ ์ €์žฅํ•˜์˜€๋‹ค.

๊ทธ๋‹ค์Œ answer๋ฅผ sort ํ•ด์ค€๋’ค str๋กœ ํ•˜๋‚˜์”ฉ ์ด์–ด๋ถ™์—ฌ์ฃผ์—ˆ๋‹ค.

์ด๋•Œ [0,0,0,0] ์ผ๋•Œ๋Š” 0์ด ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ int(ans)๊ฐ€ 0์ด๋ฉด str(0)์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ–ˆ๋‹ค.

def solution(numbers):
    answer = []
    ans = ''
    for number in numbers:
        tmp_number = [str(i) for i in str(number)]
        while len(tmp_number) < 4:
            for i in str(number):
                tmp_number.append(i)
            tmp_number = tmp_number[0:4]
        answer.append([str(''.join(tmp_number)), number])
    answer.sort(reverse=True)
    for _, item in answer:
        ans += str(item)
    return str(0) if not int(ans) else ans

if __name__ == '__main__':
    print(solution([0,0,0,1000]))
    print(solution([6,10,2]))
    print(solution([0,0,0,0]))

 

 

๋ฐ˜์‘ํ˜•