[백준] 1110번 : 더하기 사이클 - Java
https://www.acmicpc.net/problem/1110
🎁 문제
🎲 알고리즘
N의 일의 자릿수는 새로운 수의 십의 자리로 된다.
N의 일의 자릿수와 십의 자릿수를 더한 값의 1의 자릿수는 새로운 수의 일의 자리로 간다.
하지만, N이 한 자릿수 정수라면 앞에 0을 붙여서 더한다.
Step 1
먼저 주어진 수를 N이라 하고 새로운 수를 T로 가정을 해보자.
먼저 주어진 수 N의 일의 자릿수는 새로운 수 T의 십의 자릿수로 간다
T = (N % 10) * 10 // T의 십의 자릿수
즉, 10으로 나눈 나머지 값에 10을 곱하면 T의 십의 자릿수가 된다.
Step 2
필자는 일의 자릿수는 구현 했지만 새로운 수의 십의 자리로 가는 것을 구현 못해서 다른 사람의 풀이를 참조 하였다.
다음은 각 자릿수의 합을 구해보자.
N의 십의 자릿수는 나누기 10을 하면 N이 한 자릿수이면 0, 그 외에는 십의 자릿수가 그대로 반환된다.
그리고 N의 일의 자릿수는 나머지인 %를 쓰면 된다.
이 두개를 더한 뒤 10으로 나눈 나머지가 N의 각 자릿수의 합의 일의 자릿수가 T의 일의 자릿수가 된다.
T = ((N / 10)+(N % 10)) % 10) // T의 일의 자릿수
Step 3
step1 의 코드와 step2의 코드를 합치면 T가 된다
T = ((N % 10) * 10) + ((N / 10)+(N % 10)) % 10) // step1 + step2
📃 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int cycle = 0;
int b = a;
while(true) {
a = ((a % 10) * 10) + (((a / 10)+(a % 10)) % 10);
cycle++;
if(b==a) break;
}
System.out.println(cycle);
}
}
Author And Source
이 문제에 관하여([백준] 1110번 : 더하기 사이클 - Java), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@junbeomm-park/백준-1110번-더하기-사이클-Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)