알고리즘

백준 #1110 java 2023.01.11

chaewonni 2023. 1. 11. 00:28

더하기 사이클 문제! 

처음 보고서는 꽤나 번거롭겠군 생각했지만 막상 풀다보니 재밌었다.

package boj_basic.step3;

import java.util.Scanner;

public class Q1110 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int num = sc.nextInt();
		
		int NUM = 0;
		int i = 0;
		NUM = (num%10)*10 + ((num/10 + num%10)%10);
		
		while(true) {
			if(NUM!=num) {
				NUM = (NUM%10)*10 + ((NUM/10 + NUM%10)%10);
				i++;
			}
			else {
				if(NUM == num);
				break;
			}
		}
		System.out.println(i+1);

	}

}

근데 풀면서도 내가 더럽게 풀고 있구나... 지금 내 코드가 되게 더럽구나...를 확실히 느낄 수 있었다..

어거지로 맞추긴 했지만 뭔가 더 좋은 풀이방법이 있겠다 싶어 다른 분들의 코드를 참고해보았는데..

 

package boj_basic.step3;

import java.util.Scanner;

public class Q1110_1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int num = sc.nextInt();
		
		int i = 0;
		int copy = num;
		
		while(true) {
			num = ((num%10)*10) + ((num/10) + (num%10)) %10;
			i++;
			if(copy == num) {
				break;
			}
		}
		System.out.println(i);

	}

}

 

확실히 깔끔하다.....

나처럼 NUM을 만들어 처음에 계산시키고 나중에 i+1을 하는 방법보단

그냥 간단하게 copy=num으로 숫자를 복사해주면 될 일이었다!!!

 

최대한 깔끔한 코드를 만들 수 있도록 계속해서 노력해봐야겠다.