관리 메뉴

LC Studio

백준 1110번 더하기 사이클 (JAVA) 본문

Java/백준 알고리즘

백준 1110번 더하기 사이클 (JAVA)

Leopard Cat 2022. 3. 10. 17:25

문제를 너무 어렵게 생각했나...

처음 입력받는 N의 값이

1. 10이하 1자리수

2. 10이상 2자리수인 경우를 나눠 알고리즘을 설계해 보았다.

 

package test;
import java.util.Scanner;

public class Main{
    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        
        int i = 1;

        if(N<10){
            int A = 0;
            int B = N;
            int C = A + B;
            while(!(Integer.toString(B).concat(Integer.toString(C)).equals(Integer.toString(N))) ){
                A = B;
                B = C;
                C = A + B;
                if(C>10){
                    C = C%10;
                }
                i = i+1;
            }
        }
        else{
            int A = N/10;
            int B = N%10;
            int C = A + B;
            if(C>10){
                C = C%10;
            }
            while( !(Integer.toString(B).concat(Integer.toString(C)).equals(Integer.toString(N))) ){
                A = B;
                B = C;
                C = A + B; //8
                if(C>10){
                    C = C%10;
                }
                i++;
            }
        }     
        System.out.println(i);
    }

}

위와같이 하면, 답이 나오긴 한다... 하지만 제출하면 메모리 초과라고 뜬다ㅋㅋㅋㅋ...(좌절)

혼자서 이리저리 궁리해보다 주어진 고민의 시간이 끝나 다른 분들의 풀이를 참고해 보았다.

 

import java.util.Scanner;

public class Main{
    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int copy = N;
        int i = 0;


        do{
            N = ((N%10)*10)+(((N/10)+(N%10))%10);
            i++;
        }       
        while(N!=copy);

        System.out.println(i);
    }

}

이렇게 간단할수가...

기본적인 접근방식은 크게 다르지 않았다.

일단 초기 입력값 N에 %처리를 한번 더 해준다면 굳이 10이하, 10이상을 나눠서 처리할 필요가 없었다.

또한, 굳이 A = N/10, B=N%10 ,C = A+B 이런식으로 변수로 나눠 계산할 필요없이,

A,B,C에 해당하는 식 자체를 묶어서 처리했다.

배워갑니다......ㅎㅎ

반응형

'Java > 백준 알고리즘' 카테고리의 다른 글

백준 4344 평균은 넘겠지 (Java)  (0) 2022.03.15
백준 8958번 (JAVA)  (0) 2022.03.14
백준 3052 나머지(JAVA)  (0) 2022.03.11
백준 2577번 숫자의 개수  (0) 2022.03.11
백준 15552번 빠른 A+B (JAVA)  (0) 2022.03.10