티스토리 뷰

반응형

문제

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

 

출력

첫째 줄에 N의 사이클 길이를 출력한다.

예제입력

26

 

예제 출력

4

 


 

문제풀이

//입력값 받기, 같은 폴더내에 input.txt 생성
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');


solution(input);

function solution(input) {
  
  
    let preNum;
    let postNum;
    let num = input < 10 ? '0'+input : input+'';
    let result = num;
    let count =1;
    let check = true;
 

    while(check){

        preNum = num[1];
        postNum = (+num[0])+(+num[1]);
        postNum = postNum>=10 ? (postNum+'')[1] : postNum;
        num = preNum+postNum;
        check = result===num ? false : count ++;
    }
    console.log(count);

}

설명

단계별 풀이에따라 while문을 사용하여 해결하였다.

1. 입력으로 넘어온 값이 10 이하일시, 앞에 0을 추가한다. ex) 6이 입력되면 06으로 바꿔주기

삼항 연산자를 사용하여 if문을 사용하지 않고 진행하였다. 10이하일시 '0'+input 값을 주어 String으로 변환과 앞에 0을 붙여줌

* +연산자는 좌항 및 우항에 String 값이 있으면 자동으로 String값으로 변환시켜줌

2. 문자열 num을 만들어서 num[0]과 num[1]을 분리

num[1]의 값은 다음 숫자에서 num[0]이 되어야하고 다음숫자에서 num[1]은 num[0]+num[1]이 되어야함.

preNum + postNum으로 생각하고 진행

단, postNum이 10이 넘을경우, 문제가 되는데 10이 넘을경우 일의자리에 위치한 숫자만가져와야 함으로 삼항연산자를 사용.

10이 넘을경우 2번째칸에 해당하는 값만 가져와서 postNum에 저장

맨 처음 입력된 값과 같아질 경우 while문 종료.

 

 


출처

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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함