https://www.acmicpc.net/problem/1074
์ด๊ฒ๋ ์์ ์ ํผ ์ ์ด ์๋ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ๋ฅผ ๋ฑ ๋ณด๋ฉด ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ ๋ถํ ์ ๋ณต ๋ฌธ์ ์ด๋ค. ํ์ง๋ง ์๊ฐ ์ ํ์ด 0.5์ด๋ก ์๊ฐ์ ์ ์ํด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ์ญ์ ์์ ์ ํ์์ ๋, ์ฒซ ์๋์์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ์๋ค. ๋ชจ๋ ์ฌ๋ถ๋ฉด์ ๋ํด ์ฌ๊ท๋ฅผ ๋๋ฆฌ๋ค๊ฐ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ์๋ค.
์๊ฐ ์ด๊ณผ๊ฐ ๋์ง ์๊ธฐ ์ํด์๋ ์ฌ๊ท๋ฅผ ๋๋ฆฌ๊ธฐ ์ ์, ๋ด๊ฐ ํ์ํ๊ณ ์ ํ๋ ์ขํ๊ฐ ์ด๋ ์ฌ๋ถ๋ฉด์ ์๋์ง ๋จผ์ ํ์ ์ ํ ํ, ํด๋น ์ฌ๋ถ๋ฉด์ ๋ํด์๋ง ์ฌ๊ท๋ฅผ ํตํด ํ์์ ํด์ผ ํ๋ค.
ex)
3ํ 1์ด ์ฐพ๊ธฐ
1. ์ฒ์ ํฐ ์ฌ๊ฐํ์ 4์ฌ๋ถ๋ฉด์ผ๋ก ๋๋ด์ ๋, 3์ฌ๋ถ๋ฉด์ ์๋ค. -> 3์ฌ๋ถ๋ฉด ํ์
2. ๋ ๋ฒ์งธ ์ฌ๊ฐํ์ 4์ฌ๋ถ๋ฉด์ผ๋ก ๋๋ด์ ๋, 4์ฌ๋ถ๋ฉด์ ์๋ค. -> 4์ฌ๋ถ๋ฉด ํ์
3. ์ฌ๊ฐํ์ ํฌ๊ธฐ๊ฐ 1์ด ๋์ด์ ์ข ๋ฃ -> ๊ฒฐ๊ณผ ๋ฆฌํด
์ฌ๊ทํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฌ๊ฐํ์ ์์ ์ขํ์ ํ, ์ด, ์ฌ๊ฐํ ์ฌ์ด์ฆ ์ ๋ณด๋ฅผ ๋๊ฒจ์ค๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ทํจ์ ์์์ ์ฌ๋ถ๋ฉด์ ์ขํ ๋ฒ์๋ฅผ ๊ณ์ฐํด, ํด๋น ์ฌ๋ถ๋ฉด์ ์์นํ๋ฉด ์ฌ๊ท๋ฅผ ํตํด ํ์์ ํ๋ค.
์ฌ๊ท๋ฅผ ํ ๋๋ ์ฌ์ด์ฆ๋ฅผ ๋ฐ์ผ๋ก ์ค์ธ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ์ด์ฆ๊ฐ 1์ด ๋๋ฉด ์ฌ๊ท๋ฅผ ์ข ๋ฃํ๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int r, c;
static int count = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
int size = (int) Math.pow(2, N);
z(0, 0, size);
System.out.println(count);
}
public static void z(int i, int j, int size) {
if(size == 1) { //์ข
๋ฃ์กฐ๊ฑด
return;
}
if(r < i + size / 2 && c < j + size / 2) { //1์ฌ๋ถ๋ฉด์ ์์น
z(i, j, size / 2);
}else if(r < i + size / 2 && j + size / 2 <= c) { //2์ฌ๋ถ๋ฉด์ ์์น
count += size * size / 4;
z(i, j + size / 2, size / 2);
}else if(i + size / 2 <= r && c < j + size / 2) { //3์ฌ๋ถ๋ฉด์ ์์น
count += size * size / 4 * 2;
z(i + size / 2, j, size / 2);
}else { //4์ฌ๋ถ๋ฉด์ ์์น
count += size * size / 4 * 3;
z(i + size / 2, j + size / 2, size / 2);
}
}
}
๊ฒฐ๊ณผ
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2960๋ฒ - ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2022.08.21 |
---|---|
๋ฐฑ์ค 17608๋ฒ - ๋ง๋๊ธฐ (0) | 2022.08.21 |
๋ฐฑ์ค 2839๋ฒ - ์คํ ๋ฐฐ๋ฌ (0) | 2022.08.21 |
๋ฐฑ์ค 1193๋ฒ - ๋ถ์์ฐพ๊ธฐ (0) | 2022.08.21 |
๋ฐฑ์ค 15686๋ฒ - ์นํจ ๋ฐฐ๋ฌ (0) | 2022.08.21 |