📍문제 링크
https://www.acmicpc.net/problem/1011
1011번: Fly me to the Alpha Centauri
우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행
www.acmicpc.net
📍알고리즘 분류
- 수학
📍문제 풀이
- 특정한 수 N 이 주어질 때, 1 ... N ... 1 구조를 만족하는 전체 배열의 길이를 구하면 된다
- 이 문제는 규칙성이 있다
N = 1 (N <= 1 * 1)
1
답 1
N = 2 (N <= 1 * 2)
1 1
답 2
N = 3 (N <= 2 * 2)
1 1 1
답 3
N = 4 (N <= 2 * 2)
1 2 1
답 3
N = 5 (N <= 3 * 2)
1 2 1 1 or 1 1 2 1
답 4
N = 6 (N <= 3 * 2)
1 2 2 1
답 4
N = 7 (N <= 3 * 3)
1 1 2 2 1 or 1 2 2 1 1
답 5
N = 8 (N <= 3 * 3)
1 2 2 2 1
답 5
N = 9 (N <= 3 * 3)
1 2 3 2 1
답 5
...
N의 범위에 따라 길이가 일정한 것을 확인할 수 있다
1 * 1 -> 1
1 * 2 -> 2
2 * 1 -> 3
2 * 2 -> 4
...
📍코드 (JavaScript)
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const input = [];
const solution = (num) => {
let answer = 0;
for (let i = 1; i <= num; i++) {
answer++;
if (num <= i * i) return answer;
else {
answer++;
if (num <= i * (i + 1)) return answer;
}
}
};
rl.on("line", (line) => {
input.push(line);
}).on("close", () => {
const data = input.slice(1).map((row) => row.split(" ").map(Number));
for (let el of data) {
const [A, B] = el;
console.log(solution(B - A));
}
});