본문 바로가기
코딩테스트/programming_JAVA

[Java] baekjoon_1110번 : 원래 수로 돌아올 때까지 연산 반복

by prometedor 2021. 9. 4.
주어지는 정수 N을 이용해 바뀌는 N의 십의 자리수와 일의 자리수를 구하여 원래 수로 돌아올 때까지 연산 반복

주어지는 정수가 N (N>=0 , N<=99)이라고 할 때 연산식을 A+B=C 라고 하면,

A=N/10 -> 정수 N의 십의 자리수

B=N%10 -> 정수 N의 일의 자리수

C=((N/10)*10)+N

 

새롭게 만들어지는 정수를 T라고 하면,

T =B*10 + C%10 // 십의자리로 만들어주어야 하기 때문에 B에 10을 곱함

  =((N/10)*10) + ((A+B)%10)

  =((N/10)*10) + ((N/10+N%10)%10)

 

  • BufferedReader & BufferedWriter 이용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main03 {
  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 N=Integer.parseInt(br.readLine());
    br.close();
    int N_copy=N;
    int count=0;

    while(true) {
      N=((N%10)*10)+(((N/10)+(N%10))%10);
      count++;

      if(N_copy == N) {
        break;
      }
    }
    bw.write(String.valueOf(count));
    bw.flush();
    bw.close();
  }
}

 

  • Scanner & System.out.println(); 이용
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int N=sc.nextInt();
    sc.close();
    int copy_N=N;
    int count=0;

    while(true) {
      N=((N%10)*10)+(((N/10)+(N%10))%10);
      count++;
      if(copy_N == N) {
        break;
      }
    }
    System.out.println(count);
  }
}