//GitHub https://github.com/vellimole0621
백준 1110번 : 더하기 사이클
(문제 - https://www.acmicpc.net/problem/1110)
문제 설명 : 0과 99 사이 정수 N을 받아 십의 자리 수 와 일의 자리 수를 더해 만든 수의 일의 자리 수와 기존의 일의 자리를 십의 자리 수로 만들어서 하나의 수로 만드는 과정을 반복한다. 몇 번 반복해야 처음 N과 동일하게 되는 지를 출력
풀이 : N 값 입력 받음 >> N 값의 십의 자리 수 & 일의 자리 수 각각 변수에 저장 >> 연산 과정 속 중간 값 / 연산 후 생성 값 / 반복 횟수 변수 생성 >> 조건 1. N값 0 인 경우 / (while) 조건 2. N값이 10 미만인 수인 경우 / 조건 3. N값이 10 이상인 수인 경우 >> 연산 수행 >> 반복 횟수 증가 >> while 조건(N값과 생성 값 동일) 부합시 >>반복 횟수 출력
package algorithm; // 파일 폴더
import java.util.*; // Scanner 클래스 사용
public class Solve220723_2 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in); // scanner 객체 생성
int AB = sc.nextInt(); // N 값 입력 받음
int Num1 = AB /10; // 기존 수의 십의 자리 수
int Num2 = AB % 10; // 기존 수의 일의 자리 수
int AM = 0; // 연산 과정 속 중간 값
int AF = 0; // 연산 과정 후 생성한 수
int count = 0; // 반복 횟수
if(AB == 0){ // 조건 1. N 값이 0인 경우
count = 1;
}
while(AB!=AF){ // 생성한 수가 N값과 동일할 때까지 반복
if(Num1 == 0){ // 수가 10 미만의 수인 경우
AF = Num2 * 10 + Num2;
}else{ // 수가 10 이상의 수인 경우
AM = (Num1 + Num2) % 10; // (기존의 수의 십의 자리 수 + 일의 자리 수) 한 것의 일의 자리 수 *중간값
AF = Num2 * 10 + AM; // (기존의 수의 일의 자리 수)를 십의 자리 수로 하고 위의 수를 일의 자리 수로 해서 새로운 수 생성
AM = 0; // 중간값 초기화
}
count = count + 1; // 반복 횟수 증가
Num1 = AF / 10; // 기존 수의 십의 자리 수 변경
Num2 = AF % 10; // 기존 수의 일의 자리 수 변경
}
System.out.println(count); // 반복 횟수 출력
sc.close(); // scanner 종료
}
}
'프로그래밍 > Java' 카테고리의 다른 글
[자바 JAVA/알고리즘] 백준 2562번 : 최댓값 (0) | 2022.07.24 |
---|---|
[자바 JAVA/알고리즘] 백준 11720번 : 숫자의 합 (0) | 2022.07.24 |
[자바 JAVA/알고리즘] 백준 2480번 : 주사위 세개 (0) | 2022.07.23 |
[자바 JAVA/알고리즘] 백준 10952번 : A+B - 5 (0) | 2022.07.22 |
[자바 JAVA/알고리즘] 백준 2439번 : 별 찍기 - 2 (1) | 2022.07.19 |