[JS] 백준 1110번 더하기 사이클

jsg_ko·2021년 11월 15일
0

코테연습

목록 보기
10/21

test 90%에서 에러뜬다.. node 런타임에서 잘 작동은 하는데 진짜 뇌지컬없이 피지컬로 짜니까 백준 런타임에서 동작을 안하나보다 앞으로 뇌를쓰자 ...

let input = fs.readFileSync(filePath()).toString().split(''); 

function solution(input){
  let firstValue = `${Number(input[0])}${Number(input[1])}` // 배열로 받은 input값을 문자열로 재할당해줬다
  if(firstValue === '00'){
  return console.log(0) 
  } // 입력값 0을 받았을때 문자열 00(\n을 0으로 인식함)으로 재할당하고 돌려서 사이클 길이가 2가된다. 그래서 하드코딩으로 그냥 콘솔 0을 때려밖았다 ㅋ 
  let plus = Number(input[0]) + Number(input[1]) // 문자열로 재할당한값을 각각 더해주었다 2자리 이기 때문에 인덱스 0과 1로 하드코딩가능 
  let result = input[1] + `${plus}`.slice(`${plus}`.length-1, `${plus}`.length) // 문자열 마지막자리와 plus 마지막자리를 문자열로 변환해 더해서 변수에 할당했다 
  let i = 1; // 위에서 하드코딩으로 한번 사이클 돌려놨기때문에 1부터

  while(!(firstValue == result)){ // 사이클 돌리는 조건 
    plus = Number(result[0]) + Number(result[1])  
    result = result[1] + `${plus}`.slice(`${plus}`.length-1, `${plus}`.length)
    i = i + 1;
  }
  console.log(i);

}

solution(input)

구글님풀이

현타온다

let input = Number(require('fs').readFileSync('/dev/stdin').toString());

let num = input;
let sum;
let i = 0;

while (true) {
    i++;

    sum = Math.floor(num / 10) + num % 10;
    num = (num % 10) * 10 + sum % 10; 

    if (input === num) {
	break;
    } 
}

console.log(i);

출처 https://gurtn.tistory.com/34

profile
디버깅에서 재미를 추구하면 안되는 걸까

0개의 댓글