728x90
문제
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
해결
예시)
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
→ 각 수의 십의 자릿수와 일의 자릿수를 알아야 더하기 사이클을 진행할 수 있다.
n의 십의 자릿수 = 10으로 나눌 때의 몫
int n / 10 = n의 십의 자릿수
n의 일의 자릿수 = 10으로 나눈 나머지
int n % 10 = n의 일의 자릿수
구현
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
31
|
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int newNum = n; // 입력받은 수부터 시작하므로 n으로 초기화
int a, b;
int cnt = 0;
while (true) {
a = newNum / 10; // 십의 자릿수 구하기
b = newNum % 10; // 일의 자릿수 구하기
newNum = b * 10 + (a + b) % 10;
// b가 십의 자릿수가 돼야 하므로 10을 곱해준다
// a + b 결과의 일의 자릿수가 새로운 수의 일의 자릿수이므로
// 10으로 나눈 나머지 값을 더한다
cnt++;
if (n == newNum) {
break; // 원래 수로 돌아오면 사이클을 멈춘다
}
}
System.out.println(cnt);
}
}
|
cs |
결과

728x90
'Algorithm > Beakjoon' 카테고리의 다른 글
[Java] baekjoon 1152 : 단어의 개수 / 문자열 (0) | 2021.07.21 |
---|---|
[Java] baekjoon 10951 : A+B - 4 / while문 (0) | 2021.07.20 |
[Java] baekjoon 2753 : 윤년 / if문 (0) | 2021.07.18 |
[Java] baekjoon 9498 : 시험 성적 / if문 (0) | 2021.07.17 |
[Java] baekjoon 1330 : 두 수 비교하기 / if문 (0) | 2021.07.16 |
댓글