ezhoon

[백준] 1110_더하기 사이클_Java 본문

[Java] 백준 문제풀이/while문

[백준] 1110_더하기 사이클_Java

ezhoon 2022. 1. 6. 22:13

백준 1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

 

⚠️주의사항

  • 1의 자리는 *10 해서 나온 숫자의 10의 자리를 다음 숫자의 10의 자리로 넘긴다.
  • 1의 자리와 10의 자리를 서로 더해서 나온 값의 1의 자리를 다음 숫자의 1의 자리로 넘긴다.
  • 사이클 수를 출력한다.

 

문제에서 10보다 작은 수가 주어질 경우 0을 붙여 두 자리 수로 만들어 준다를 간단하게 생각하면 1의 자리 숫자 * 10 한 것이라고 생각할 수 있습니다.

 

위 주의사항을 코드로 만들어 보겠습니다.

N = ((N % 10) * 10) + (((N % 10) + (N / 10)) % 10);

N % 10 * 10  -> N의 1의 자리를 다음 숫자의 10의 자리로 만들어주는 과정입니다. %10 해서 나온 나머지 값에 *10 해줘서 다음 숫자의 10의 자리 숫자로 만들어줍니다.

 

((N % 10) + (N / 10)) % 10 -> N을 %10 해서 1의 자리를 구하고 N / 10 해서 10의 자리를 구한 뒤 더하고 %10 해서 나온 나머지 값을 만들어서 다음 숫자의 1의 자리로 만들었습니다.


문제풀이


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

public class While_1110 {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        int fixedNum = N;
        int cnt = 1;
        while (true) {
            N = ((N % 10) * 10) + (((N % 10) + (N / 10)) % 10); //(N % 10) * 10) 다음 숫자의 10의 자리 + ((N % 10) + (N / 10)) % 10 다음 숫자의 1의 자리
            if (N == fixedNum) {
                break;
            }
            cnt++; // 사이클 수 더해주기
        }
        System.out.println(cnt);
    }
}

'[Java] 백준 문제풀이 > while문' 카테고리의 다른 글

[백준] 10951_A+B-4_Java  (0) 2022.01.06
[백준] 10592_A+B-5_Java  (0) 2022.01.06
Comments