본문 바로가기
Java/AlgorithmPS

백준) 더하기 사이클(1110번)

by NH_club 2023. 9. 16.
 

1110번: 더하기 사이클

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

www.acmicpc.net

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        int firstNumber = Integer.parseInt(bf.readLine());
        int count = 0;

        if (firstNumber < 10) {
            firstNumber = firstNumber * 10;
        }

        int result = firstNumber;


        while (true) {
            int one = result % 10;
            int ten = result / 10;
            int sum = one + ten;
            result = one * 10 + sum % 10;
            count += 1;

            if (result == firstNumber) {
                System.out.println(count);
                break;
            }

        }

    }

}

 

배운 점:

BufferedReader는 Scanner 대체로 사용할 수 있음.

BufferedReader는 Scanner와 다르게 Exception 처리가 안되어있어 따로 해줘야 함.

BufferedReader는 Enter만 경계로 인식, 공백으로 구분지을 땐 Stringtokenizer 활용.

BufferedReader는 버퍼가 가득 차거나 개행 문자가 나타나면 버퍼의 내용을 한 번에 프로그램에 전달.

그러하기 때문에 키를 누르는 즉시 바로 프로그램에 전달되는 Scanner에 비해 훨씬 빠름

(키를 누르는 즉시 바로 프로그램에 전달되면 전달되기까지의 과정이 계속 일어나기 때문에)