백준 2903번을 풀어보았다.
간단한 문제이지만 다양한 관점에서 규칙을 표현할 수 있다.
1.
한 변의 점의 개수가 2, 2+(2-1), 3+(3-1), 5+(5-1), 9+(9-1), ... 과 같이 증가한다고 볼 경우 다음과 같이 풀이할 수 있다.
let N = require('fs').readFileSync('/dev/stdin').toString()
N = Number(N)
let dot = 2
for (let i = 0; i < N; i++) {
dot += dot - 1
}
console.log(dot ** 2)
2.
한 변의 점의 개수가 2, 2+2^0 + 2+2^1, 2+2^2, 2+2^3, ... 과 같이 증가한다고 볼 경우 다음과 같이 풀이할 수 있다.
let N = require('fs').readFileSync('/dev/stdin').toString()
N = Number(N)
let dot = 2
for (let i = 0; i < N; i++) {
dot += 2 ** i
}
console.log(dot ** 2)
3.
한 변의 점의 개수가 2, 2*2-1, (2*2-1)*2-1, ((2*2-1)*2-1)*2-1, ... 과 같이 증가한다고 볼 경우 다음과 같이 풀이할 수 있다.
let N = require('fs').readFileSync('/dev/stdin').toString()
N = Number(N)
let dot = 2
for (let i = 0; i < N; i++) {
dot = dot * 2 - 1
}
console.log(dot ** 2)
4.
한 변의 점의 개수가 2^1+1, 2^2+1, 2^3+1, 2^4+1, ... 과 같이 증가한다고 볼 경우 다음과 같이 풀이할 수 있다.
let N = require('fs').readFileSync('example.txt').toString()
N = Number(N)
console.log((2 ** N + 1) ** 2)