🔥문제링크
https://www.acmicpc.net/problem/1074
🔥풀이
일단 2**N X 2**N 이루어진 배열에서 2**N-1 * 2**N-1 으로 4개의 영역 중 어떤 영역에 속해있는지 판별하면서 재귀적으로 스코프를 계속해서 좁혀 나갔다. 좁혀나가면서 Skip한 영역에 속해있는 개수를 지속해서 answer에 더하였다.
// 5분
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString();
//.split("\n");
let [N, r, c] = input.split(" ").map((n) => Number(n));
if(N===1){
if(r==0&&c==0){
console.log(0)
}else if(r==0&&c==1){
console.log(1)
}else if(r==1&&c==0){
console.log(2)
}else if(r==1&&c==1){
console.log(3)
}
return
}
let answer = 0;
let divider = 2 ** (N - 1);
r=r+1
c=c+1
// answer = 48 , 60,
// divider = 4 , 2, 1
// r/c =8/8 , 4/4 , 2/2
while (1) {
if (divider === 1) {
if (r === 1) {
if (c === 1) {
answer += 1;
} else {
answer += 2;
}
} else {
if (c === 1) {
answer += 3;
} else {
answer += 4;
}
}
break;
}
if (r<= divider) {
if (c<= divider) {
//1
} else {
// 2
answer += ((divider*divider) * 1);
c = c - divider;
}
} else {
if (c <= divider) {
//3
answer += ((divider*divider) * 2);
r = r - divider;
} else {
//4
answer += ((divider*divider) * 3);
r = r - divider;
c = c - divider;
}
}
divider = Math.floor(divider / 2);
}
console.log(answer-1);
'Algorithm' 카테고리의 다른 글
백준[JS] > 1051번 숫자 정사각형 (0) | 2024.10.31 |
---|---|
백준[JS] > 1021번 회전하는 큐 (0) | 2024.10.30 |
프로그래머스[JS] > [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (1) | 2024.09.11 |
프로그래머스[JS] > [PCCP 기출문제] 3번 / 충돌위험 찾기 (0) | 2024.09.11 |
프로그래머스[JS] > 거스름돈 (2) | 2024.09.06 |