[Java][백준] #1110 - 더하기 사이클

배수연·2024년 3월 22일

algorithm

목록 보기
18/45

🔗 백준 1110 - 더하기 사이클

문제

알고리즘 분류

  • 수학
  • 구현

IDEA

숫자 26의 예시를 보면,
2 + 6 = 8이고, 새로운 수는 68이다.
6 + 8 = 14이고, 새로운 수는 84이다.

-> 주어진 수 N에 대하여
N의 1의 자리수(이하A) ((N의 10의 자리수 + 1의 자리수)의 1의 자리수)(이하B)를 이어붙이면 새로운 수가 된다.

이 때 어떤 수의 10의 자리수는 n/10 (10으로 나눈 몫), 1의 자리수는 n%10(10으로 나눈 나머지)로 구할 수 있다.

따라서 A는 N%10, B는 (N/10 + N%10)%10으로 구할 수 있다.
A와 B를 이어붙일 때는 A*10 + B로 계산한다.

풀이

1. 입력 및 점화식 계산

  • n을 입력받고, 문제에 따라 변환된 수와 n을 비교하기 위해 criterion 변수를 만들어 n을 저장해둠
  • n을 IDEA의 식에 따라 변환하며 count를 증가시킴
  • 변환을 반복하다 criterion과 n이 같으면 반복문 탈출
        int n = Integer.parseInt(br.readLine()); //주어진 수
        int criterion = n;
        int count = 0;
        while (true) {
            n = (n % 10) * 10 + (n % 10 + n / 10) % 10;
            count++;
            if (criterion == n) break;
        }

전체 코드

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine()); //주어진 수
        int criterion = n;
        int count = 0;
        while (true) {
            n = (n % 10) * 10 + (n % 10 + n / 10) % 10;
            count++;
            if (criterion == n) break;
        }
        System.out.println(count);
    }
}

0개의 댓글