[JS] 백준 알고리즘 Node.js 1356. 유진수

2023. 3. 11. 13:02코딩연습

1. 문제

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

 

1356번: 유진수

첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다 작거나 같은 자연수이다.

www.acmicpc.net

 

2. 풀이방법

1) 입력받은 숫자를 일정 부분마다 잘라서 유진수가 될 수 있는지를 확인한다.

2) 만약 입력받은 숫자의 길이가 1자리 숫자인 경우는 무조건 NO

const n = require('fs').readFileSync('/dev/stdin').toString().trim();

let checkBool = false;

for(let i = 1; i <= n.length; i++){
    let first = n.slice(0, i).split('');
    let second = n.slice(i).split('');

    let firstTimes = 1;
    for(let j = 0; j < first.length; j++){
        firstTimes *= +first[j];
    }

    let secondTimes = 1;
    for(let j = 0; j < second.length; j++){
        secondTimes *= +second[j];
    }

    if(firstTimes === secondTimes) {
        checkBool = true;
        break;
    }
}

if(checkBool && n.length !== 1) console.log("YES")
else console.log("NO")

 

3. 정리

- slice() 함수에 대해 명확하게 알 수 있었다.

let test = '1221';

console.log(test.slice(0,1)); // '1'
console.log(test.slice(1)); // '221'

let testArr = [ 1, 2, 3, 4];

console.log(testArr.slice(0,1)); // [1]
console.log(testArr.slice(1)); // [2, 3, 4]

*참고

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slice