[백준] 1110. 더하기 사이클

문제

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

풀이

입력한 두자리 정수(n)(한자리 정수라면 10의 자리에 0을 붙인다)를 각각 분리한 뒤 합을 구한다.
그 합의 1의 자리 값을 새로운 정수의 1의 자리에 두고 n의 1의 자리에 있던 숫자를 10의 자리로 올린 후 새로운 두자리 정수를 만든다.
다시 만들어진 두자리 정수를 또 분리해서 각각을 합을 구하고............
이 방식으로 입력한 수와 같은 수가 나올 때까지 반복한다. 최종적으로 몇 회를 거쳐 입력한 수와 동일한 값이 나오는지 횟수를 구하는 문제. 🙄

우선 횟수를 구하기 위한 변수 count를 선언하고 숫자 n을 입력 받아 각 자리수를 나눈다.(a, b)
그리고 숫자를 임시로 저장해두기 위한 변수 tmp를 선언한다.
반복문이 실행되는 순간 사이클이 돌아가는 것이기 때문에 count++;
tmp에 n의 1의 자리 숫자(b)를 우선 저장해두고, b에 a와 b를 더한 후 % 10을 해서 1의 자리 값만 저장한다. tmp에 저장했던 숫자를 a, 즉 10의 자리에 두고 b를 더하여 두자리수 정수를 만든다.
만약에 이렇게 만든 두자리 정수가 맨 처음 입력 받았던 정수 n과 같아지면 while문 종료(break)

코드

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int count = 0;
		int n = sc.nextInt();
		int a = n / 10;
		int b = n % 10;
		int tmp = 0;
		while (true) {
			count++;
			tmp = b;
			b = (a + b) % 10;
			a = tmp;
			if((a*10) + b == n) break;

		}
		System.out.println(count);
		sc.close();
	}
}

좋은 웹페이지 즐겨찾기