완전탐색 문제는 시간 복잡도가 높을 수밖에 없다.
때문에, 모든 경우의 수를 검토하고, 예외 케이스가 있지는 않은지 꼼꼼하게 생각해 보며 문제풀이를 진행했다.
내가 생각했던 풀이 방향은 다음과 같았다.
// 백준 1065 - 한수
// 링크: https://www.acmicpc.net/problem/1065
const readline = require('readline')
const r1 = readline.createInterface({
input: process.stdin,
output: process.stdout,
})
const solution = () => {
const n = input.shift()
findAnswer(n)
console.log(answer)
return
}
const findAnswer = (n) => {
const number = parseInt(n) + 1 // 미만이 아니라 이하인 조건이기 때문.
for (let i = 1; i < number; i++) {
const stringNum = '' + i
if (stringNum.length < 3) {
answer++
continue
}
if (isAnswer(stringNum)) {
answer++
}
}
}
const isAnswer = (stringN) => {
const difference = parseInt(stringN[1] - stringN[0])
for (let i = 1; i < stringN.length; i++) {
const current = parseInt(stringN[i - 1])
const next = parseInt(stringN[i])
if (current + difference !== next) {
return false
}
}
return true
}
const input = []
let answer = 0
r1.on('line', (line) => {
input.push(line)
}).on('close', () => {
solution()
})