본문 바로가기

백준

[백준] 더하기 사이클 1110번

728x90

코드 힌트

  1. 문제 이해:
    • 이 문제는 주어진 숫자를 특정 규칙에 따라 변형한 후, 다시 원래의 숫자로 돌아올 때까지 몇 번의 변형이 필요한지를 묻는 문제입니다.
  2. 변형 규칙:
    • 주어진 숫자의 각 자리수를 분리하여 더한 뒤, 그 결과를 이용해 새로운 숫자를 생성합니다.
    • 예를 들어, 26이라는 숫자가 주어지면, 2와 6을 더해 8이 되고, 마지막 자리 6과 8을 결합해 새로운 숫자 68이 됩니다.
  3. 사이클의 길이 계산:
    • 반복문을 사용하여 숫자를 변형하고, 그 과정에서 원래의 숫자로 돌아올 때까지 변형 횟수를 기록합니다.
    • 변형이 끝난 후, 사이클의 길이(변형 횟수)를 출력합니다.
  4. 입출력 처리:
    • BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 처리합니다. 이는 대량의 데이터를 효율적으로 처리하기 위함입니다.
int sum = n / 10 + n % 10;
n = n % 10 * 10 + sum % 10;

 


정답은 더보기 클릭

더보기
import java.io.*;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        // 입력을 받기 위한 BufferedReader와 출력하기 위한 BufferedWriter 초기화
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 사이클의 길이를 저장할 변수 초기화
        int result = 0;
        
        // 입력받은 숫자를 정수로 변환하여 n과 target 변수에 저장
        int n = Integer.parseInt(br.readLine());
        int target = n;
        
        // 주어진 숫자가 다시 원래의 숫자로 돌아올 때까지 반복
        do {
            // n을 두 자리 숫자로 분리한 뒤, 그 합을 구함
            int sum = n / 10 + n % 10;
            
            // n의 마지막 자리에 sum의 마지막 자리를 결합하여 새로운 숫자를 생성
            n = n % 10 * 10 + sum % 10;
            
            // 사이클의 길이를 증가시킴
            result++;
        } while (n != target);  // n이 원래 숫자와 같아질 때까지 반복
        
        // 결과를 출력
        bw.write(result + "\n");
        
        // 출력 버퍼를 비우고 BufferedWriter를 닫음
        bw.flush();
        bw.close();
    }
}
728x90

'백준' 카테고리의 다른 글

[백준] 팩토리얼 10872번  (0) 2024.08.14
[백준] OX퀴즈 8958번  (0) 2024.08.14
[백준] 괄호 9012번  (0) 2024.08.08
[백준] 제로 10773번  (0) 2024.08.08
[백준] 스택 2 28278번  (0) 2024.08.08