๋ฌธ์
https://www.acmicpc.net/problem/1074
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_1074 {
static int n, r, c, cnt;
public static void move(int len, int r, int c) {
if(len == 1) return; // ์ฐ๋ฆฌ๊ฐ ์ฐพ๋ ๋ฑ ํ ์นธ๋ง ๋จ์ ๋ ๋ฐํ
len /= 2; // 4๋ฑ๋ถํ ํ ๋ณ์ ๊ธธ์ด
if(r < len && c < len) { // 1
move(len, r, c);
} else if(r < len && c < len*2) { // 2
cnt += len*len;
move(len, r, c-len);
} else if(r < len*2 && c < len) { // 3
cnt += len*len*2;
move(len, r-len, c);
} else if(r < len*2 && c < len*2) { // 4
cnt += len*len*3;
move(len, r-len, c-len);
}
}
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
n = Integer.parseInt(st.nextToken());
r = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
move((int)Math.pow(2, n), r, c);
System.out.println(cnt);
}
}
๐ ๋ถํ ์ ๋ณต, ์ฌ๊ท ๋ฌธ์
โ๏ธ ์ด ๋ฌธ์ ๋,, ์ง๋ฌธ์,, ๋ต์ด ์๋ค,,!!
์ง๋ฌธ์์ ๋งํ๋ ๊ทธ๋๋ก, ํ ๋ณ์ด 2^N์ธ 2์ฐจ์ ๋ฐฐ์ด์ ํฌ๊ฒ 4๋ฑ๋ถ์ผ๋ก ๋๋๊ณ ,
ํ ์ ์๋ ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ํด ์ค ๋ค, ๊ทธ ๋ค์์ ๋ ์์ ๋ฒ์์ ๋ฐฐ์ด์ 4๋ฑ๋ถ์ผ๋ก ๋๋๊ณ ,, ๋ฐฉ๋ฌธ์ฒดํฌ,, ๋๋๊ณ ,,
๋ฅผ ๋ฐ๋ณตํ๋ ์ฌ๊ท๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
โ๏ธ ์ฐ์ ์ฒ์ ์ฃผ์ด์ง r, c ์๋ฆฌ๊ฐ ๋ฐฐ์ด์ 4๋ฑ๋ถ ํ์ ๋ ์ด๋์ ์์นํ๋์ง ํ์ธํ๋ค.
Z ๋ชจ์์ผ๋ก ๋ฐฉ๋ฌธํ๊ธฐ ๋๋ฌธ์, ๋ด๊ฐ ์ํ ๋ฑ๋ถ๋ณด๋ค ์ผ์ชฝ ํน์ ์์ชฝ์ ์์นํ๋ ๊ณณ์ ๋ํด์๋
๊ตณ์ด ์ ๋ถ ํ์ํ ํ์๊ฐ ์๊ณ , ๊ทธ๋ฅ ํด๋น ๋ฑ๋ถ ์นธ ๊ฐ์๋ฅผ ๋ชจ๋ ๋ํด์ฃผ๋ฉด ๋๋ค.
โ๏ธ ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก, r, c๋ฅผ ์ข์ธก ์๋จ์ผ๋ก ์ ์ ์ฎ๊ฒจ๊ฐ๋ฉด์
๋ฐฐ์ด์ ๋ฒ์๋ฅผ ์ ์ฐจ ์ค์ฌ๊ฐ๋ ๋ก์ง์ผ๋ก ์ฌ๊ท๋ฅผ ์์ฑํ๋ค.
๐ก ํผ๋๋ฐฑ
- ๊ฝค๋ ๋นก์ผ ์ฌ๊ท๋ฌธ์ ์๋ค. ์ฌ๊ท๋ ์ธ์ ๋ ์ด๋ ต๋ฐ !
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java Algorithm] ๋ฏธ์ธ๋จผ์ง ์๋ ! BOJ #17144 (0) | 2022.08.31 |
---|---|
[Java Algorithm] ์ฟผ๋ํธ๋ฆฌ BOJ #1992 (0) | 2022.08.18 |
[Java Algorithm] ๋์ฅ๊ณ JUNGOL #1828 (0) | 2022.08.16 |
[Java Algorithm] ์ํ๋ฒณ BOJ #1987 (0) | 2022.08.16 |
[Java Algorithm] ๋ ๋์ BOJ #16197 (0) | 2022.08.16 |
๋๊ธ