๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/1074
- ํ์๋ ํฌ๊ธฐ๊ฐ 2N × 2N์ธ 2์ฐจ์ ๋ฐฐ์ด์ Z๋ชจ์์ผ๋ก ํ์ํ๋ ค๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, 2×2๋ฐฐ์ด์ ์ผ์ชฝ ์์นธ, ์ค๋ฅธ์ชฝ ์์นธ, ์ผ์ชฝ ์๋์นธ, ์ค๋ฅธ์ชฝ ์๋์นธ ์์๋๋ก ๋ฐฉ๋ฌธํ๋ฉด Z๋ชจ์์ด๋ค.
- N > 1์ธ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 2N-1 × 2N-1๋ก 4๋ฑ๋ถ ํ ํ์ ์ฌ๊ท์ ์ผ๋ก ์์๋๋ก ๋ฐฉ๋ฌธํ๋ค.
- ๋ค์ ์๋ 22 × 22 ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ฐฉ๋ฌธํ ์์์ด๋ค.
- N์ด ์ฃผ์ด์ก์ ๋, rํ c์ด์ ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธํ๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ๋ค์์ N=3์ผ ๋์ ์์ด๋ค.
- ์ฒซ์งธ ์ค์ ์ ์ N, r, c๊ฐ ์ฃผ์ด์ง๋ค.
- rํ c์ด์ ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธํ๋์ง ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- ๋ฐฐ์ด์ 4๋ฑ๋ถํ์ฌ 1,2,3,4๋ถ๋ฉด์ผ๋ก ๋๋ ํ, ๊ตฌํด์ผ๋๋ ์ด๊ณผ ํ์ ๊ธฐ์ค์ผ๋ก 4๋ฑ๋ถํ ๋ถ๋ถ์ ์ด๋ ๋ถ๋ถ์ ํด๋นํ๋์ง ํ์ธํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ํด๋น๋๋ ์ฌ๋ถ๋ฉด์ ์์์ ์ ์ซ์๋ฅผ ๊ณ์ฐํด์ ์ ์ฅํ๋ค.
- ์์์ ์ ์ซ์๋ ํฌ๊ธฐ๋ฅผ ๊ณฑํ ๊ฐ์ ํด๋น ์ฌ๋ถ๋ฉด์ ํด๋นํ๋ 0 ~ 3๊น์ง์ ๊ฐ์ ๊ณฑํ๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- ์ฒ์์๋ ๋ฐฐ์ด์ ์ ์ธํด์ ์ซ์์ ๊ท์น์ฑ์ ์ฐพ์์ ํด๋น ํ๊ณผ ์ด์ ์ซ์๋ง ๊ณ์ฐํด์ ์ ์ฅํ ์๊ฐ์ด์์ง๋ง ์๊ฐ์ฒ๋ผ ์ ๋์ง ์์์ ๋ถํ ์ ๋ณต์ผ๋ก ํ์๋ค...
- ์ฌ์ค ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ก ํ๋ฒ ํ๋ ธ๋๋ฐ... ์์ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ ค๊ณ ๋ฐฐ์ด ์ ์ธํด๋์ ๊ฒ์ ์์ง์์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋ ๊ฒ์ด์๋ค.... (๋ฐฐ์ด์ ์์ฑํ ๊ฒ๋ง์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋ผ๋.. ใ ใ )
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ1074 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// ๋ฐฐ์ด์ ํฌ๊ธฐ
int N = Integer.parseInt(st.nextToken());
// ํ
int r = Integer.parseInt(st.nextToken());
// ์ด
int c = Integer.parseInt(st.nextToken());
// 2์ N์ ๊ณฑ ๊ตฌํ๊ธฐ
int num = (int)Math.pow(2, N);
// ๊ฒฐ๊ณผ๊ฐ
int result = 0;
// ํฌ๊ธฐ๊ฐ 1๋ณด๋ค ํฌ๋ฉด ๊ณ์ ๋ฐ๋ณต
while(num > 1){
// ํฌ๊ธฐ๋ฅผ 2๋ก ๊ณ์ ๋๋ (์ฌ๋ถ๋ฉด์ผ๋ก ๋ถํ ํ๊ธฐ ์ํด์)
num = num / 2;
// ํ๊ณผ ์ด์ด 2๋ก ๋๋ ์ฌ์ด์ฆ ์ซ์๋ณด๋ค ์๋ค๋ฉด
// 2์ฌ๋ถ๋ฉด์ ์๋ค๋ ๋ป
if(r < num && c < num){
// ๊ฒฐ๊ณผ๊ฐ์ ์์์ ์ ์ซ์๋ฅผ ๋ํจ
result = result + num * num * 0;
}
// ํ์ด ์ฌ์ด์ฆ๋ณด๋ค ์๊ณ ์ด์ด ์ฌ์ด์ฆ๋ณด๋ค ํฌ๋ค๋ฉด
// 1์ฌ๋ถ๋ฉด์ ์๋ค๋ ๋ป
else if(r < num && c >= num){
result = result + num * num * 1;
// ์ด์ ํฌ๊ธฐ๋ฅผ ํ์ฌ ์ฌ์ด์ฆํฌ๊ธฐ๋งํผ ๋นผ์ค
// ๋ค์ํ๋ฒ ์๊ฒ ์ฌ๋ถ๋ฉด์ ๋๋ ์ ๊ตฌ๋ถํด์ผ๋๋ฏ๋ก
c = c - num;
}
// ํ์ด ์ฌ์ด์ฆ๋ณด๋ค ํฌ๊ณ ์ด์ด ์ฌ์ด์ฆ๋ณด๋ค ์๋ค๋ฉด
// 3์ฌ๋ถ๋ฉด์ ์๋ค๋ ๋ป
else if(r >= num && c < num){
result = result + num * num * 2;
// ํ์ ํฌ๊ธฐ๋ฅผ ํ์ฌ ์ฌ์ด์ฆํฌ๊ธฐ๋งํผ ๋นผ์ค
r = r - num;
}
// ํ๊ณผ ์ด์ด ์ฌ์ด์ฆ๋ณด๋ค ๋ชจ๋ ํฌ๋ค๋ฉด
// 4์ฌ๋ถ๋ฉด์ ์๋ค๋ ๋ป
else{
result = result + num * num * 3;
// ํ๊ณผ ์ด์ ํฌ๊ธฐ๋ฅผ ํ์ฌ ์ฌ์ด์ฆ๋งํผ ๋นผ์ค
c = c - num;
r = r - num;
}
}
System.out.println(result);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 1697 ์จ๋ฐ๊ผญ์ง (0) | 2024.08.20 |
---|---|
[Java] BOJ 1389 ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2024.08.19 |
[Java] BOJ 30804 ๊ณผ์ผ ํํ๋ฃจ (2) | 2024.08.17 |
[Java] BOJ 21736 ํ๋ด๊ธฐ๋ ์น๊ตฌ๊ฐ ํ์ํด (0) | 2024.08.16 |
[Java] BOJ 18870 ์ขํ ์์ถ (2) | 2024.08.15 |