백준 1436번 영화감독 숌-JS

처음에는 뭔 규칙을 찾아서 어쩌구 해야하는 줄 알고 뻘짓을 많이함
근데 "666이 포함된"을 곰곰히 생각해보니 바로 inclueds가 떠올랐고, 숫자들을 차례로 증가시키면서 666이 포함된 숫자들만 따로 배열로 만들면 괜찮지 않을까? 라는 생각이 들었다.

- 처음 제출한 코드

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input[0]);

let ending = '666';
let num = 666;
let count = 0;

let arr = [];
while (arr.length !== N-1) {
    num++;
    count++;
    if(String(num).includes('666')) {
        arr.push(num);
    }
}
console.log(arr[arr.length-1]);

맞왜틀? 이였는데 테스트를 0으로 하니 숫자가 나오지 않았다. 이건 배열에 2번째 영화이름에 들어가는 숫자부터 있었다. 그래서 처음 영화이름을 출력할때 오류가 발생
해결: arr배열에 666을 넣고, while문의 조건도 N이 아닐때로 수정

- 두번째 제출

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input[0]);

let ending = '666';
let num = 666;
let arr = [];
arr.push(num);

while (arr.length !== N) {
    num++;
    if(String(num).includes(ending)) {
        arr.push(num);
    }
}

console.log(arr[arr.length-1]);

설명하자면
1. 666이포함된 숫자를 담을 배열 arr를 선언하고, 그 배열에 666을 넣어준다.
2. while문이 한번 실행 될 때마다 num을 1씩 증가
3. num을 문자열로 바꾸어 이 문자에 '666'이 포함된다면 arr에 넣기
4. arr배열의 길이가 N이 되면 N번째 영화숫자를 찾았단 뜻이니 N이 아닐동안 으로 조건식 해주는 것
5. arr배열의 마지막 요소를 정답으로 출력

좋은 웹페이지 즐겨찾기