본문 바로가기

study/baekJun

[백준/자바/java/while]백준 1110 더하기 사이클

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

이번 문제는 이해하기가 조금 어려웠다

26을 입력했다면,

0:(2,6) = 8

(2,6) = (0,8)

1:(6,8) = 14

(6,8)=(1,4)

2:(8,4) = 12

(8,4) = (1,2)

3:(4,2)=6

(4,2)=(0,6)

4:(2,6) = (0,8)

4번의 반복끝에 처음 입력했던 숫자가 나왔는데

이를 토대로 코드를 짜보았다.

import java.io.*;

public class qn1110{
   public static void main(String[] args) throws IOException{
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
      
      int init = Integer.parseInt(br.readLine().trim()); //26
      int a = init/10, b=init%10; //2,6
      int result  = a+b;//8
      int count = 1;
      while(true){  
         int sum = result;//8   12
         int c= sum/10,d=sum%10;//0,8   1,2
         result = b+d;   //(6,8)14   (4,2)6
         if(b*10 + d == init){ //
            bw.write(count+"\n");
            bw.flush();
            bw.close();
            br.close();
            return ;
         }
         else{
            count ++;
            
         }
         b = d;//8   2
         c =result/10;d=result%10;//1,4   0,6
         
         int num = b+d; //(8,4)12   (2,6)
         if(b*10 + d == init){ //
            bw.write(count+"\n");
            bw.flush();
            bw.close();
            br.close();
            return ;
         }
         b=d;//4
         result = num; //12
         count ++;//2
         
         
      }
      
      
   }
}

while문을 사용하여 조건을 걸어 끝내야하는데

내 코드를 보면 조건을 두 부분에서 체크한다. 

더 간단한 방법이 많겠지만 지금 내실력으론 저게 최선이었다 ㅜㅜ

제일 신경써줬어야 하는 부분은 b와 d를 계속적으로 갱신 시켜줬어야 했단 것.(특히 b)