공부하는 블로그

Baekjoon | Q.1110 - 더하기 사이클 본문

알고리즘 공부

Baekjoon | Q.1110 - 더하기 사이클

치킨닮은닭 2019. 12. 19. 19:56
 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =

www.acmicpc.net

 입력받은 수를 각 자릿수끼리 더하여 나온 결과의 일의 자리 수가 다음 수의 일의 자리가 되고, 입력받은 수의 일의 자리 수가 다음 수의 십의 자리 수가 된다. 이와 같이 쭉 진행되다 입력받은 수와 같아질 경우 루프문을 종료키고 루프가 몇번 돌았는지 출력해내는 문제이다. 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int input = sc.nextInt();
		
		String a;
		String b;
		String num = input + "";

		int w = 0;
		while(true) {
			if(num.length() == 1) {
				a = "0";
				b = num;
			}else {
				a = num.charAt(0) + "";
				b = num.charAt(1) + "";
			}
			
			String sum = (Integer.parseInt(a) + Integer.parseInt(b)) + "";
			num = b + sum.charAt(sum.length() - 1);
			
			w++;
			
			if(input == Integer.parseInt(num)) {
				System.out.println(w);
				break;
			}
		}
		
	}

}

 

 마지막 if문을 처음엔 문자열로 비교하다보니 입력 숫자(input)가 일의 자리 일 경우 사이클 결과 숫자(num)가 "0x"이 되어버리는 바람에 무한루프에 빠졌었다. int로 변환하여 비교해주니 해결되었다. 

'알고리즘 공부' 카테고리의 다른 글

Baekjoon | Q.2577 - 숫자의 개수  (0) 2019.12.20
Baekjoon | Q.10951 - A + B 4  (0) 2019.12.19
Baekjoon | Q.10871 - X보다 작은 수  (0) 2019.12.18
Baekjoon | Q.2439 - 별찍기 2  (0) 2019.12.18
Baekjoon | Q.10817번 : 세 수  (0) 2019.12.18
Comments