반응형

본 문제는 주어진 수를 10의 자리와 1의 자리로 나누어 더한 후 1의 자리였던 숫자와 더한 숫자의 1의 자리를 더하는 것을 반복하여 원래 주어진 수로 돌아오기까지 걸린 횟수를 구하는 문제이다.
이 문제를 처음 접하고 문제 그대로 주어진 숫자를 10으로 나누고 10의 자리와 1의 자리를 더한 값도 10으로 나누기를 반복하여 횟수를 측정하는 식으로 접근해 보았다.
작성한 코드는 아래와 같다.
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner s=new Scanner(System.in);
int n=s.nextInt();
System.out.print(cycle(n));
}
public static int cycle(int n){
int start=n;
int cnt=0;
while(true){
int a=n/10;
int b=n%10;
int c=a+b;
cnt++;
n=b*10+c%10;
if(n==start){return cnt;}
}
}
}
본 코드의 시간복잡도는 O(60) = O(1)이다.
왜냐하면 n이 최대 60 사이클이 될수 있는데 이는 최악의 상황에 반복문이 60번 돌아갈 수 있음을 의미하기 때문이다.
'문제풀이 > 수학' 카테고리의 다른 글
| [문제 풀이] 백준 1676번 팩토리얼 0의 개수 JAVA (0) | 2025.03.03 |
|---|---|
| [문제 풀이] 백준 10872번 팩토리얼 JAVA (0) | 2025.03.03 |
| [문제 풀이] 백준 5347번 LCM JAVA (0) | 2025.03.02 |
| [문제 풀이] 백준 11653번 소인수분해 JAVA (0) | 2025.03.02 |
| [문제 풀이] 백준 1929번 소수 구하기 JAVA (0) | 2025.03.02 |