-
728x90
1. 문제설명
https://www.acmicpc.net/problem/1436
2. 예제 입/출력
예제 입력 예제 출력 2 1666 3 2666 6 5666 187 66666 500 166699 3. 문제 풀이
const fs = require("fs"); let input = fs.readFileSync("/dev/stdin").toString().trim(); const N = parseInt(input); let count = 0; // 종말의 수 개수 let num = 0; // 현재 검사 중인 수 // N보다 작을 때 까지 종말의 수 찾기 // num을 1씩 증가시키면서 num을 문자열로 변환했을 때 '666'이 포함되어있다면 count 증가시키기 while (count < N) { num++; if (String(num).includes("666")) { count++; } } console.log(num);
종말의 수는 666이 적어도 3개 이상 연속으로 들어가야한다.
그래서 count변수를 사용해서 N번째 종말의 수를 찾기 위해 몇번의 반복이 필요한지 추적해야한다.
예를 들어 2를 입력했을 때 num은 계속 1씩 증가하면서 num에서 666이 포함되는지 여부를 통해 count를 증가시키는 반복을 진행한다.
num이 1666이 될 때 666이 포함되어있으므로 count를 증가시키고 이후 반복문은 종료된다.
'코딩테스트, 알고리즘' 카테고리의 다른 글
피보나치 수열로 알아보는 동적계획법(Dynamic Programming) (1) 2023.11.16 [백준] 9095번 1, 2, 3 더하기 (0) 2023.11.06 [백준] 1316번 그룹 단어 체커 (node.js) (0) 2023.10.22 [프로그래머스] 영어 끝말잇기 (JS) (0) 2023.09.04 [프로그래머스] 올바른 괄호 (JS / Stack) (0) 2023.08.27 댓글