728x90
코드 힌트
- 문제 이해:
- 이 문제는 주어진 숫자를 특정 규칙에 따라 변형한 후, 다시 원래의 숫자로 돌아올 때까지 몇 번의 변형이 필요한지를 묻는 문제입니다.
- 변형 규칙:
- 주어진 숫자의 각 자리수를 분리하여 더한 뒤, 그 결과를 이용해 새로운 숫자를 생성합니다.
- 예를 들어, 26이라는 숫자가 주어지면, 2와 6을 더해 8이 되고, 마지막 자리 6과 8을 결합해 새로운 숫자 68이 됩니다.
- 사이클의 길이 계산:
- 반복문을 사용하여 숫자를 변형하고, 그 과정에서 원래의 숫자로 돌아올 때까지 변형 횟수를 기록합니다.
- 변형이 끝난 후, 사이클의 길이(변형 횟수)를 출력합니다.
- 입출력 처리:
- 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 |