[백준] 1110. 더하기 사이클
문제
https://www.acmicpc.net/problem/1110
풀이
입력한 두자리 정수(n)(한자리 정수라면 10의 자리에 0을 붙인다)를 각각 분리한 뒤 합을 구한다.
그 합의 1의 자리 값을 새로운 정수의 1의 자리에 두고 n의 1의 자리에 있던 숫자를 10의 자리로 올린 후 새로운 두자리 정수를 만든다.
다시 만들어진 두자리 정수를 또 분리해서 각각을 합을 구하고............
이 방식으로 입력한 수와 같은 수가 나올 때까지 반복한다. 최종적으로 몇 회를 거쳐 입력한 수와 동일한 값이 나오는지 횟수를 구하는 문제. 🙄
우선 횟수를 구하기 위한 변수 count를 선언하고 숫자 n을 입력 받아 각 자리수를 나눈다.(a, b)
그리고 숫자를 임시로 저장해두기 위한 변수 tmp를 선언한다.
반복문이 실행되는 순간 사이클이 돌아가는 것이기 때문에 count++;
tmp에 n의 1의 자리 숫자(b)를 우선 저장해두고, b에 a와 b를 더한 후 % 10을 해서 1의 자리 값만 저장한다. tmp에 저장했던 숫자를 a, 즉 10의 자리에 두고 b를 더하여 두자리수 정수를 만든다.
만약에 이렇게 만든 두자리 정수가 맨 처음 입력 받았던 정수 n과 같아지면 while문 종료(break)
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = 0;
int n = sc.nextInt();
int a = n / 10;
int b = n % 10;
int tmp = 0;
while (true) {
count++;
tmp = b;
b = (a + b) % 10;
a = tmp;
if((a*10) + b == n) break;
}
System.out.println(count);
sc.close();
}
}
Author And Source
이 문제에 관하여([백준] 1110. 더하기 사이클), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bonni/백준-1110.-더하기-사이클저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)