๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 1110 - ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด

by YWTechIT 2021. 5. 18.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 1110 - ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด

๋ฐฑ์ค€ 1110 - ๋”ํ•˜๊ธฐ ์‚ฌ์ดํด


โšก๏ธ ๋‚˜์˜ ํ’€์ด

๋ฌธ์ œ์˜ ์กฐ๊ฑด๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ธ๋ฐ, n๋ฒˆ ์‚ฌ์ดํด์„ ๋Œ๊ณ  ๋‚˜์„œ ์›๋ž˜์˜ ์ˆ˜์™€ ๊ฐ™์•„์ง€๋Š” ์กฐ๊ฑด์‹์„ ์ž˜๋ชป ๋„ฃ์–ด์„œ ์กฐ๊ธˆ ํ—ค๋งธ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ ์ฒ˜์Œ ์ž…๋ ฅ์„ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ check๋กœ ์„ ์–ธํ•˜๊ณ  ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋‚˜์˜จ ๊ฐ’๊ณผ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋๋‹ค.

 

๋˜, ์ฒ˜์Œ ์กฐ๊ฑด์— ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 10๋ณด๋‹ค ์ž‘์œผ๋ฉด ์•ž์— 0์„ ๋ถ™์ธ๋‹ค๊ณ  ๋‚˜์™€์žˆ๋Š”๋ฐ, ์‚ฌ์‹ค ์ด ์กฐ๊ฑด์€ ์—†์–ด๋„ ๋˜๋Š” ์กฐ๊ฑด์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒ˜์Œ ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 5๋ผ๊ณ  ํ•  ๋•Œ, ์•ž์— 0์„ ๋ถ™์—ฌ์ฃผ๊ณ  ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋ฉด 0+5๊ฐ€ ๋˜๋Š”๋ฐ, 0์€ ์žˆ์œผ๋‚˜ ์—†์œผ๋‚˜ ๊ฐ™์€ ๊ฐ’์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์กฐ๊ฑด์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.


์—ฌ๋‹ด์ด์ง€๋งŒ ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ 10์œผ๋กœ ๋‚˜๋ˆˆ ๋ชซ๊ณผ 10์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ผ์˜ ์ž๋ฆฟ์ˆ˜๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋”ํ•˜๊ธฐ
  2. mapํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ str๋กœ ๋ฐ”๊พธ๊ณ  sumํ•จ์ˆ˜๋กœ ํ•œ ๋ฒˆ์— ๋”ํ•˜๊ธฐ
  3. ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด์„œ str๋กœ ๋ฐ”๊พธ๊ณ  ํ•˜๋‚˜์”ฉ ๋”ํ•˜๊ธฐ
n = 123

# 1. ์žฌ๊ท€ํ•จ์ˆ˜
def sum_digit(n):
    if n < 10:
        return n
    return n % 10 + sum_digit(n // 10)

print(sum_digit(n))
๐Ÿ‘‰๐Ÿฝ 6    

# 2. map ํ•จ์ˆ˜
result = sum(map(int, str(n)))

print(result)
๐Ÿ‘‰๐Ÿฝ 6

# 3. ๋ฐ˜๋ณต๋ฌธ
temp = 0
for i in str(n):
    temp += int(i)

print(temp)
๐Ÿ‘‰๐Ÿฝ 6

์ƒˆ๋กœ์šด ์ˆ˜ new_n์„ ๊ตฌํ•  ๋•Œ 10์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋ฌธ์ž์—ด์ธ๋ฑ์‹ฑ์œผ๋กœ ์ œ์ผ ๋งˆ์ง€๋ง‰์˜ ๊ฐ’๋งŒ ๋–ผ ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ๋Š” 28776KB๋กœ ๋™์ผํ–ˆ๊ณ  ์‹คํ–‰์‹œ๊ฐ„์ด 64m/s, 72m/s๋กœ 10์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•์ด 8m/s๋กœ ๊ทผ์†Œํ•˜๊ฒŒ ๋นจ๋ž๋‹ค. ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

n = int(input())
check = n
flag = True
cnt = 0

# 10์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ฐฉ๋ฒ•
while flag:
    temp = int(n) // 10 + int(n) % 10
    new_n = str(n % 10) + str(temp % 10)
    cnt += 1
    if int(new_n) == check:
        flag = False
    n = int(new_n)
print(cnt)

# ๋ฌธ์ž์—ด ์ธ๋ฑ์‹ฑ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•
while flag:
    temp = int(n) // 10 + int(n) % 10
    new_n = str(n)[-1] + str(temp)[-1]
    cnt += 1
    if int(new_n) == check:
        flag = False
    n = new_n
print(cnt)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€