์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- error
- c++
- ๋ฐ์ดํฌ์คํธ๋ผ
- ๊ตฌํ
- dfs
- ๋งต
- ์๋ฎฌ๋ ์ด์
- ์คํ
- ์ฐ์ ์์ ํ
- Spring
- ๊ทธ๋ฆฌ๋
- dynamic debugging
- BFS
- thymeleaf
- java
- ๋ฐฑํธ๋ํน
- ์ด๋ถ ํ์
- ์ฌ๊ท
- JPA
- GCP
- OS
- DP
- ๋ฌธ์์ด
- ์์ ์ ๋ ฌ
- web
- ์ต๋จ ๊ฒฝ๋ก
- ๋ถํ ์ ๋ณต
- Reversing
- CVE
- ๋์ ํฉ
- Today
- Total
hades
[Baekjoon] 1074๋ฒ: Z ๋ณธ๋ฌธ
๐ฅ ๋ฌธ์
https://www.acmicpc.net/problem/1074
๐ ์ค๊ณ
2 X 2๊ฐ ๋ ๋๊น์ง ๋๋๋ค๊ฐ 2 X 2๊ฐ ๋์์ ๋, Z๋ฅผ ๊ทธ๋ฆฌ๋ฉด์ ์์๋ฅผ ์ผ๋ค.
๋๋๋ ๊ณผ์ ์์๋ Z ๋ชจ์์ผ๋ก ๋๋๋ค.
์ค์ํ ๊ฒ์ ์์ญ์ ๋๋๋ ๊ณผ์ ์์ Target ์นธ์ด ์ํ์ง ์์ ์์ญ์ ์นธ ์๋ ์์๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ฏ๋ก, ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ฌ๊ท ํจ์๋ฅผ ํตํด ์์ญ์ ํ ๋ณ์ ๊ธธ์ด๊ฐ 2๋ผ๋ฉด, Z๋ฅผ ๊ทธ๋ฆฌ๋ฉด์ ์์๋ฅผ ์ผ๋ค. 2๋ณด๋ค ํฌ๋ค๋ฉด Target ์นธ์ด ์ํ์ง ์์ ์์ญ์ ์นธ ์๋ฅผ ๋ํ๋ค.
์ฃผ์ํด์ผํ ์ ์ ๋๋๋ ๊ณผ์ ์์๋ Z ๋ชจ์์ผ๋ก ๋๋๊ธฐ ๋๋ฌธ์ ์์๋ฅผ ์ ๊ฒฝ์จ์ผ ํ๋ค.
๐ ํ์ด
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int n, r, c, result = 0;
void Z(int cur_length, int start_x, int start_y){
if (cur_length == 2){
if (start_x == r && start_y == c){
return;
}
result += 1;
if (start_x == r && start_y + 1 == c){
return;
}
result += 1;
if (start_x + 1 == r && start_y== c){
return;
}
result += 1;
if (start_x + 1 == r && start_y + 1 == c){
return;
}
}
else{
int half_x = start_x + cur_length/2;
int half_y = start_y + cur_length/2;
int out_x = start_x + cur_length;
int out_y = start_y + cur_length;
if (start_x <= r && r < half_x && start_y <= c && c < half_y){
Z(cur_length/2, start_x, start_y);
return;
}
result += (cur_length/2)*(cur_length/2);
if (start_x <= r && r < half_x && half_y <= c && c < out_y){
Z(cur_length/2, start_x, half_y);
return;
}
result += (cur_length/2)*(cur_length/2);
if (half_x <= r && r < out_x && start_y <= c && c < half_y){
Z(cur_length/2, half_x, start_y);
return;
}
result += (cur_length/2)*(cur_length/2);
if (half_x <= r && r < out_x && half_y <= c && c < out_y){
Z(cur_length/2, half_x, half_y);
return;
}
}
}
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n >> r >> c;
Z(pow(2, n), 0, 0);
cout << result << "\n";
return 0;
}
๐ ๋ฉ๋ชจ
๋ด๊ฐ ์ด์ฉํ ์ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ธ์งํ๊ณ , ํฐ ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณ ๋ฏผํ๋ ๊ฒ์ด ํ์ํ๋ค.
'๐ PS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1541๋ฒ: ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2024.07.05 |
---|---|
[Baekjoon] 1260๋ฒ: DFS์ BFS (0) | 2024.07.03 |
[Baekjoon] 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2024.07.02 |
[Baekjoon] 1003๋ฒ: ํผ๋ณด๋์น ํฉ (0) | 2024.07.02 |
[Baekjoon] 1920๋ฒ: ์ ์ฐพ๊ธฐ (0) | 2024.07.01 |