이번 문제는 이해하기가 조금 어려웠다
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)
'study > baekJun' 카테고리의 다른 글
[백준10817/자바/for문/if문]백준10817 세 수 (0) | 2020.05.13 |
---|---|
[백준5543/자바] 백준5543 상근날드 (0) | 2020.05.12 |
[백준/JAVA/for문]백준10871 X보다 작은 수 (0) | 2020.04.08 |
[백준/자바/JAVA/for문/별찍기]백준2438, 백준2439 (0) | 2020.04.07 |
[백준/JAVA/자바입출력]백준11021, 백준11022 (0) | 2020.04.06 |