알고리즘 연습

[백준_BOJ] 1110. 더하기 사이클 _ Java

코딩하는 너구리 2019. 12. 8. 13:23
반응형

문제

 

 

 

 

 

 

풀이

 

 

간단한 시뮬레이션 문제 정도로 생각하면 될 것 같습니다.

 

수의 변형 규칙이 주어질 때 시작할 때와 같은 값

 

즉, 원래의 숫자로 돌아가는 데까지 걸리는 사이클을 구하는 문제입니다.

 

 

저는 while 문을 사용하여 풀이하였습니다. 사이클이 성립될 때까지

주어진 규칙대로 계속 반복 수행하기 위해서 입니다.

 

먼저 while 문이 수행될 때마다 cnt를 1씩 증가시켜주었습니다.

그리고 나서 주어진 수의 1의 자리의 수를 second 변수에 저장해두었습니다.

 

tmp에 원래 일의 자리의 수를 옮겨 담은 뒤

새로 만들어진 다음 수 " (first + second) % 10 " 의 일의 자리를

second에 저장해주었습니다.

 

그리고 나서 기존의 숫자를 저장해둔 N과  새로 만들어진 수가 같은지를 비교하여

같다면 종료해주었습니다.

 

 

# 문제에서는 10보다 작다면 10을 곱하는 연산을 해주었는데

따로 해당 연산을 하지 않은 이유는 second를 구할 때 ( first + second )의 연산 결과는

10을 곱해주나 안 곱해주나 똑같기 때문입니다 ( 이후 % 10 연산 때문에 )

 

 

 

 

코드

 

 

 

 

 

 

출처

 

 

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =

www.acmicpc.net

 

 

 

반응형