Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 기찍 N
- BOJ
- 사분면 고르기
- N 찍기
- 구현
- 10998
- Python
- 나머지
- A+B - 5
- 14681
- 2739
- A+B - 8
- 빠른 A+B
- 두 수 비교하기
- A×B
- A+B - 3
- 별 찍기 - 1
- A/B
- 2742
- 2884
- 8958
- 2741
- 사칙연산
- 수학
- 10871
- 3052
- X보다 작은 수
- 숫자의 개수
- A+B - 7
- 별 찍기 - 2
Archives
- Today
- Total
RIRINTO's Blog
BOJ 1110: 더하기 사이클 (Python) 본문
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
N을 입력받아 몇 번의 사이클만에 원래의 수로 돌아오는지 확인하는 문제입니다.
사이클마다 수행해야 할 동작은 다음과 같습니다.
만약 수가 10보다 작다면 앞에 0을 붙입니다.
각 자리의 숫자를 더합니다.
주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어붙여 새로운 숫자를 만듭니다.
26
→ 2 + 6 = 8
→ 새로운 수 68
68
→ 6 + 8 = 14
→ 새로운 수 84
84
→ 8 + 4 = 12
→ 새로운 수 42
42
→ 4 + 2 = 6
→ 새로운 수 26
26은 4번만에 원래 수로 돌아올 수 있습니다.
26의 사이클은 4입니다.
더보기
문자열로 바꾸고 각 자리를 쪼갠 후 더하여 풀 수 있습니다.
n = N = int(input())
cycle = 0
while True:
n = n % 10 * 10 + sum(map(int, list(str(n)))) % 10
cycle += 1
if n == N:
break
print(cycle)
문자열로 바꾸지 않고도 각 자리수를 더할 수 있습니다.
def sum_of_each_digit(number):
result = 0
while number:
result += number % 10
number = number // 10
return result
n = N = int(input())
cycle = 0
while True:
n = n % 10 * 10 + sum_of_each_digit(n) % 10
cycle += 1
if n == N:
break
print(cycle)
'BOJ' 카테고리의 다른 글
BOJ 2562: 최댓값 (Python) (0) | 2021.09.19 |
---|---|
BOJ 10818: 최소, 최대 (Python) (0) | 2021.09.19 |
BOJ 10951: A+B - 4 (Python) (0) | 2021.09.19 |
BOJ 10952: A+B - 5 (Python) (0) | 2021.09.19 |
BOJ 10871: X보다 작은 수 (Python) (0) | 2021.09.19 |
Comments