๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
์ฒ์์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ณ ์๊ฐ์์ด ๋ฐฐ์ด ์ ์ธํ๊ณ ๋ถํ ์ ๋ณต์ ํ๋ค๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ. (\( 2^{15} \times 2^{15} \))
๋ฐฐ์ด ์์ด ์นด์ดํ ๋ณ์ ํ๋๋ก๋ง ์๋ฌด ์๊ฐ์์ด ์ ๋ค๊ฐ ์๊ฐ ์ด๊ณผ. (ํ๋์ฉ ๋๋ฉด์ ์ ๊ฒํ๋ฉด ๊ฒฐ๊ตญ \(\mathrm{O( 2^{15} \times 2^{15})}\))
๊ทธ๋์ 4๋ฑ๋ถ์ ํ๊ณ , ์ฐพ๊ณ ์ ํ๋ (ํ, ์ด)์ด ํด๋น ์นธ์ ์๋ ๊ฒฝ์ฐ์๋ ์ฌ๊ฐํ ๊ฐ์๋งํผ ๋ํด ์ฃผ์์ต๋๋ค.
๋ง์ฝ ์ฐพ๊ณ ์ ํ๋ (ํ, ์ด)์ด๋ผ๋ฉด, ํด๋น ์นธ์ ๋ํด์๋ง ๋ค์ ์ฌ๊ท์ ์ผ๋ก ๋ค์ด๊ฐ๋ ๋ก์ง์ ๊ตฌ์ฑํด ํ ์ ์์์ต๋๋ค.
์๋ฅผ ๋ค์ด, \(4 \times 4 \) ํฌ๊ธฐ์ ์ฌ๊ฐํ์์ ์ฐพ๊ณ ์ ํ๋ ์นธ์ด \((3, \ 1)\) ์ด๋ผ๋ฉด,
\(4 \times 4 \) ํฌ๊ธฐ์ด๋ฏ๋ก 4๋ฑ๋ถ์ ํ๋ฉด, ํ ๋ณ์ ๊ธธ์ด๊ฐ 2์ธ ์ฌ๊ฐํ์ด 4๊ฐ๊ฐ ๋ง๋ค์ด ์ง๋๋ค.
Z ๋ชจ์์ผ๋ก ์ํ๋ฅผ ํด์ผ ํ๋ฏ๋ก, ์ผ์ชฝ ์ ๐๐ป ์ค๋ฅธ์ชฝ ์ ๐๐ป ์ผ์ชฝ ์๋ ๐๐ป ์ค๋ฅธ์ชฝ ์๋ ์์ผ๋ก ์ด ๋ฐฉํฅ ํ์์ ์งํํฉ๋๋ค. ์ผ์ชฝ ์ ์ฌ๊ฐํ๊ณผ ์ค๋ฅธ์ชฝ ์ ์ฌ๊ฐํ์๋ ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ์นธ์ด ์์ผ๋ฏ๋ก, ์ผ์ชฝ ์ ์ฌ๊ฐํ ๋์ด(4) + ์ค๋ฅธ์ชฝ ์ ์ฌ๊ฐํ ๋์ด(4) = 8 ์ ์นด์ดํ ๋ณ์์ ๋ํด ์ค๋๋ค.
์ผ์ชฝ ์๋ ์ฌ๊ฐํ์๋ ์ฐพ๊ณ ์ ํ๋ ์นธ์ด ์์ผ๋ฏ๋ก, ์ฌ๊ธฐ์ ๋ํด ๋ค์ 4๋ฑ๋ถํ๋ ์ฌ๊ท๋ฅผ ์ ์ฉํด์ค๋๋ค.
*(์ค๋ฅธ์ชฝ ์๋ ์ฌ๊ฐํ์ ์ด์ ๋ณผ ํ์๊ฐ ์์ผ๋ฏ๋ก ๊ฒ์ฌ X)
๋ฑ๋ถํ ์ฌ๊ฐํ์ด ํ ์นธ์ด ๋ ๋๊น์ง ์ ์ฉํ๋ฉฐ, ์ฐพ๊ณ ์ ํ๋ ์นธ์ ์ฐพ์๋ค๋ฉด ์ฌ๊ท๋ฅผ ์ข ๋ฃํ๊ณ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <iostream>
#include <cmath>
using namespace std;
#define FAST_IO ios::sync_with_stdio(false); cout.tie(NULL); cin.tie(NULL);
int N, r, c;
void Traversal(int sideLength, int row, int col, int& order) {
if (sideLength < 2)
return;
int halfLength = sideLength / 2;
for (int ri = row; ri < row + sideLength; ri += halfLength) {
for (int ci = col; ci < col + sideLength; ci += halfLength) {
bool isExistInCurrentSquareWidth = (ci <= c and c < ci + halfLength);
bool isExistInCurrentSquareHeight = (ri <= r and r < ri + halfLength);
if (isExistInCurrentSquareWidth and isExistInCurrentSquareHeight) {
Traversal(halfLength, ri, ci, order);
return;
}
order += halfLength * halfLength;
}
}
}
int main() {
FAST_IO
cin >> N >> r >> c;
N = static_cast<int>(pow(2, N));
int order = 0;
Traversal(N, 0, 0, order);
cout << order;
return 0;
}
'๐คAlgorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 1516๋ฒ | ๊ฒ์ ๊ฐ๋ฐ (C++) (1) | 2023.12.19 |
---|---|
[BOJ] 1766๋ฒ | ๋ฌธ์ ์ง (C++) (0) | 2023.12.19 |
[BOJ] 1916๋ฒ | ์ต์๋น์ฉ ๊ตฌํ๊ธฐ (C++) (0) | 2023.12.13 |
[BOJ] 1987๋ฒ | ์ํ๋ฒณ (C++) (0) | 2023.12.13 |
[BOJ] 14502๋ฒ | ์ฐ๊ตฌ์ (C++) (0) | 2023.12.13 |