일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- 데이터베이스 공부
- 애플 디벨로퍼 아카데미 후기
- 네이버 부스트캠프
- ObservableObject
- apple developer academy 후기
- global soop
- Apple Developer Academy @ POSTECH
- 제앱소
- 운영체제
- OS
- Swift 문법
- 네이버 치지직
- swift문법
- iOS 개발 오류
- 치지직
- Swift 디자인패턴
- useReducer
- StateObject
- SWIFT
- 애플 디벨로퍼 아카데미
- sqoop
- 앱 비교 프로젝트
- ObservedObject
- 애플 아카데미 후기
- 숭실대
- 소프트웨어분석및설계
- Swift 기능
- 애플 디벨로퍼 아카데미 21주차 회고
- 데이터베이스
- Today
- Total
사과하는 제라스
[백준 BOJ 1110번] 더하기 사이클 본문
목차
출처 : https://www.acmicpc.net/problem/1110
1. 문제
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.
2. 입력
첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.
26
55
1
0
71
3. 출력
첫째 줄에 N의 사이클 길이를 출력한다.
4
3
60
1
12
4. 풀이
일단 이 문제는 특이하게 do-while문을 사용해야 조금 더 코드를 간결하게 만들 수 있다.(아마도 do-while문을 활용하라고 만들어둔 문제이지 않을까 싶다.) 일단 더하기 사이클을 진행하면서 다음 수를 구하는 수식을 짜야한다. 이 더하기한 후 수식과 처음에 입력받은 값을 비교를 해야 하는데 N의 값은 더하기 사이클을 진행하면서 바꿀 것이기 때문에 처음 N 값을 유지하고자 temp라는 변수에 미리 넣어주자. 이때 제일 while문의 탈출문이 temp와 N이 같을 경우인데 이는 처음에 temp에 N값을 넣어주기 때문에 항상 처음에부터 만족을 하여 while문을 실행할 수가 없다. 따라서 do-while문을 통해서 첫 반복문은 실행을 해주고 이후부터 탈출문을 검사하도록 한다.
5. 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int temp = N;
int count = 0;
do{
N = (N%10)*10+(N/10+N%10)%10;
count++;
}
while(temp!=N);
System.out.println(count);
}
}
6. 배운 것
while문의 조건식이 처음부터 만족하지 않는다 => do-while문 사용.
'JAVA 백준 알고리즘 문제풀이 > 반복문' 카테고리의 다른 글
[백준 BOJ 10951번] A+B-4 (0) | 2022.03.28 |
---|---|
[백준 BOJ 10871번] X보다 작은 수 (0) | 2022.03.28 |
[백준 BOJ 2439번] 별 찍기-2 (0) | 2022.03.28 |
[백준 BOJ 2438번] 별 찍기-1 (0) | 2022.03.28 |
[백준 BOJ 11022번] A+B-8 (0) | 2022.03.28 |