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

박영준·2023년 5월 22일
0

코딩테스트

목록 보기
138/300

메모

/*
조건 1 : 0 <= 정수 <= 99
조건 2 : 먼저 주어진 수 < 10 -> 먼저 주어진 수 + 0 붙여(* 10 의미) -> 두 자리수로 만들기 -> 각 자리의 숫자 더하기
			먼저 주어진 수 中 가장 오른쪽 자리 수 +이어붙이기(문자로)+ 각 자리의 숫자 더한 수 中 가장 오른쪽 자리 수
            	= 새로운 수

26 ->  2+6 = 8
	26 中 6 +이어붙이기(문자로)+ 8 中 8
    	= 68
68 -> 6+8 = 14
	68 中 8 +이어붙이기(문자로)+ 14 中 4
    	= 84
84 -> 8+4 = 12
	84 中 4 +이어붙이기(문자로)+ 12 中 2
    	= 42
42 -> 4+2 = 6
	42 中 2 +이어붙이기(문자로)+ 6 中 6
    	= 26	-->  4번만에 원래 수로 돌아옴  --> 따라서 26의 사이클의 길이는 4
*/        

해결법

방법 1

import java.util.Scanner;

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

		Scanner sc = new Scanner(System.in);		// Scanner 클래스 객체 생성
        
		int N = sc.nextInt();		 // 입력받은 정수를 변수 N 에 저장
		int start = N;		// 시작 숫자
		sc.close();		// scanner 닫기
		
		int count = 0;		// 시작 숫자 N 의 사이클 길이
		
		while (true) {
			N = (N % 10 * 10) + ((N / 10 + N % 10) % 10);
			count ++;
            
			if (start == N) {
				break;
			} 
		}
        
		System.out.print(count);
	}
}
  • scanner

  • int start = N

    • 처음 입력한 값을 변수 start에 저장해두기
    • 계산식을 돌리고 나중에 if (start == N) 으로 바뀐 값과 시작 값을 비교하기
      • if(start == N) 의 조건 성립 시, break 로 인해 while 문을 벗어나게 됨
  • N = (N % 10 * 10) + ((N / 10 + N % 10) % 10)

    • 십의 자릿수를 구하고 싶을 경우, 10으로 나누기 ( / 10)
      일의 자릿수를 구하고 싶을 경우, 10으로 나눈 나머지를 구하기 ( % 10)


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

profile
개발자로 거듭나기!

0개의 댓글