티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 1110번 더하기 사이클

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

* 사용언어 : java, 자바

 

1. 문제

100 미만의 자연수 N을 입력받음

두 자리 수의 각 자리 수를 더함 (한 자리 일 경우 앞에 0이 있다고 보고 0과 더함)

더하기 전 수의 일의 자리와

더한 후 수의 일의 자리 수를 이어 붙여서 새로운 두 자리 수를 만듬

 

예를 들어 더하기 전 수가 68이면 각 자리 수를 더해서 더한 후 수가 14가 됨

더하기 전 수의 일의 자리 8과

더한 후 수의 일의 자리 4를 붙여서 84가 됨

이 연산을 반복하여 원래 자리수가 될 때까지의 횟수(사이클)를 출력

 

2. 풀이

문제 설명은 복잡하게 써있는데 차근차근 생각해보면 절차가 꽤 단순합니다.

① 연산 전 수의 일의 자리와 ② 연산 후 수의 일의 자리를 붙히는 방식입니다.

결국 더하기 연산 전과 후의 일의 자리만 붙이면 됩니다.

 

정리하면,

1) 연산 전 수의 각 자리 수(십의 자리, 일의 자리)를 더한다.

2) 연산 전과 후 숫자의 각 일의 자리를 이어서 붙인다.

입니다.

 

이런 규칙만 이해하시면 코드 부분은 이해하는데 어려움이 없을겁니다.

[if문 사용해보기]에 속한 문제이지만 while과 if를 사용하는 대신,

do~while 문을 사용하여 더 간결하게 짜보았습니다.

* do~while은 while과 다르게 안의 statement를 먼저 실행한 후 조건을 비교합니다.

 

3. 코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.close();

		int number = n;
		int count = 0;
		do {
			number = number % 10 * 10 + (number / 10 + number % 10) % 10;
			count++;
		} while (n != number);

		System.out.println(count);
	}
}
728x90
반응형
댓글