Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Hennie

[백준] 1110번 : 더하기 사이클 (JAVA) 본문

BaekJoon/04. while문

[백준] 1110번 : 더하기 사이클 (JAVA)

헨니 2021. 4. 15. 23:45

 

QUESTION

www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

ANSWER

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main0 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		String a = br.readLine();	// 입력 받은 수 => 고정!
		String temp = a;			// 비교 할 수! (처음엔 입력 받은 수)
		String second = "1";
		int b = 0;
		int count = 0;				// 몇 번 반복했는지 저장할 변수
		
		while(true) {
			// 비교할 수가 한자리 수이고 이미 앞에 0이 붙어있지 않을 때!
			if(Integer.parseInt(temp) < 10 && Integer.parseInt(second) != 0) {
				temp = 0 + temp;	// 앞에 0을 붙여 두 자리 수로 만들기
			}
			String first = temp.substring(0,1);	// 첫번째 자리
			second = temp.substring(1,2);		// 두번째 자리
			b = Integer.parseInt(first) + Integer.parseInt(second);
			
			temp = second + b%10;
			count++;
			// 입력 받은 수와 계산 한 수가 같아지면 반복문 나가기
			if(Integer.parseInt(a) == Integer.parseInt(temp)) break;
		}
		sb.append(count);
		System.out.println(sb);
	}
}

 

RESULT

 

MEMO

조금 어렵게 느껴질 수도 있는 문제지만 아래 사고 회로대로 코딩하면 쉽게 풀 수 있다!

 

1) 처음 입력받은 정수를 문자열로 생각한다

2) 입력받은 정수의 십의 자리 수와 일의 자리 수를 각각 first, second 변수로 저장한다

    (이 때, 입력받은 수가 10보다 작으면 앞에 0을 붙여줄 것!)

temp = 0 + temp;	// 숫자 + 문자 = 문자

3) 십의 자리 수와 일의 자리 수를 더한 값을 b 변수에 저장한다

4) 처음 입력받은 정수의 일의 자리수가 새로운 수의 10의 자리수가 되고 b의 일의 자리 수가 새로운 수의 일의 자리 수가 된다

temp = second + b%10;	// 문자 + 숫자 = 문자
// 연산자 우선순위에 의해 나머지 연산이 먼저 이뤄지므로 괄호 씌워주지 않아도 괜찮! 
temp = second + (b%10);

5) 연산 횟수를 count 변수에 저장한다

6) 처음 입력받은 a와 temp가 같아질 때까지 반복한다

 

 

여기까지 풀고 브론즈 3이 되었다!

'BaekJoon > 04. while문' 카테고리의 다른 글

[백준] 10951번 : A+B - 4 (JAVA)  (0) 2021.04.15
[백준] 10952번 : A+B - 5 (JAVA)  (0) 2021.04.15