[๋ฌธ์ ๋งํฌ] ๐ https://www.acmicpc.net/problem/1598
์ค๋ช

์์ญ์ด๋ ๋ ๊ฐ์ ์์ฐ์๋ฅผ ์๋ฌด๊ฑฐ๋ ์๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ซ์ํ์์ ๋ ๊ฐ์ ์์ฐ์ ์ฌ์ด์ ์ง๊ฐ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ฉด ๋๋ค.
์ฌ๊ธฐ์ ์ง๊ฐ๊ฑฐ๋ฆฌ๋ ๋์๋ฐฉํฅ๊ฑฐ๋ฆฌ์ ๋จ๋ถ๋ฐฉํฅ๊ฑฐ๋ฆฌ์ ํฉ์ ๋ปํ๋ค.
์๋ฅผ ๋ค์ด ์ซ์ํ์์ 11๊ณผ 33์ ์๊ฐํ๋ค๊ณ ํ์. ๊ทธ๋ ๋ค๋ฉด 11๊ณผ 33์ฌ์ด์ ์ง๊ฐ๊ฑฐ๋ฆฌ๋ 8์ด ๋๋ค.
(๋์๋ฐฉํฅ๊ฑฐ๋ฆฌ : 6, ๋จ๋ถ๋ฐฉํฅ๊ฑฐ๋ฆฌ : 2) ๋ค์ ๊ทธ๋ฆผ์ ์ ๋ํ๋์๋ค.

ํ์ด
์ ๋ ฅ์ด 11๊ณผ 33์ด๋ผ๊ณ ํ์.
์ซ์ํ์์ ์ซ์๊ฐ ์๋๋ก 4๊ฐ์ฉ, ์ฆ 4์ ๋ฐฐ์๋ง๋ค ์ซ์๊ฐ ๋์ด๋๊ธฐ ๋๋ฌธ์ 4๋ก ๋๋์ด์ค์ผ ํ๋ค.
์์น ๋์ถ ๋ฐฉ๋ฒ
- 11์ 4๋ก ๋๋๋ฉด ๋ชซ์ 2, ๋๋จธ์ง๋ 3์ด๋ค. ์ด ๋ง์ ์ฆ, 11์ 2๋ฒ์งธ ์ค ๋ค์์ค์ธ 3๋ฒ์งธ ์ค์ ๋๋จธ์ง๊ฐ 3์ด๋ฏ๋ก 3๋ฒ์งธ์ ์๋ค๋ ๋ป์ด๋ค. ๋๋จธ์ง๊ฐ ์์ผ๋ฉด ๋ชซ์ ๋ค์๋ฒ์งธ ์ค์ ์๋ค๋ ๋ง์ด๊ณ , ๋๋จธ์ง๊ฐ ์์ผ๋ฉด ๋ชซ์ผ๋ก ๋์จ ์ค์ ์๋ค๋ ๋ง์ด๋ค.
- 33๋ 4๋ก ๋๋๋ฉด ๋ชซ์ 8, ๋๋จธ์ง๋ 1์ด๋ค. ๋๋จธ์ง๊ฐ ์์ผ๋ฏ๋ก (8 + 1) = 9๋ฒ์งธ ์ค์ 1๋ฒ์งธ์ ์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ง๊ฐ ๊ฑฐ๋ฆฌ ๊ณ์ฐ
- ๋ชซ์ ๊ฐ๋ก์ ๊ฑฐ๋ฆฌ, ๋๋จธ์ง๋ฅผ ์ธ๋ก์ ๊ฑฐ๋ฆฌ๋ผ๊ณ ์๊ฐํ๋ค.
- 33์ ๋ชซ์ธ 8์์ 11์ ๋ชซ์ธ 2๋ฅผ ๋นผ๋ฉด ๊ฐ๋ก ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค. 8 - 2 = 6
- 11์ ๋๋จธ์ง์ธ 3์์ 33์ ๋๋จธ์ง์ธ 1์ ๋นผ๋ฉด ์ธ๋ก ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค. 3 - 1 = 2
- ๊ฐ๋ก ๊ฑฐ๋ฆฌ์ ์ธ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ฉด ์ง๊ฐ ๊ฑฐ๋ฆฌ๊ฐ ๋๋ค. 6 + 2 = 8
๊ทธ๋ฌ๋ ์์ฒ๋ผ ๋จ์ํ ๋ชซ๊ณผ ๋๋จธ์ง๋ฅผ ๊ตฌํด์ ๊ณ์ฐํ๋ฉด ์ ๋๋ค. ๋ฐ๋ก๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ ๋ ฅ์ด 5์ 4์ธ ๊ฒฝ์ฐ์ด๋ค.
5์ ๋ชซ์ 1, 4์ ๋ชซ์ 1์ด๋ฏ๋ก ๊ฐ๋ก ๊ฑฐ๋ฆฌ๋ 0์ด๋ค. 5์ ๋๋จธ์ง๋ 1, 4์ ๋๋จธ์ง๋ 0์ด๋ฏ๋ก ์ธ๋ก ๊ฑฐ๋ฆฌ๋ 1์ด๋ค.
๊ทธ๋์ ์ง๊ฐ ๊ฑฐ๋ฆฌ๋ 1์ด ๋๋ค. ๊ทธ๋ฌ๋ ๋ต์ 4์ด๋ค.
์ซ์ํ์ ์์ ์ 1๋ถํฐ ์์ํ๋ค๊ณ ๊ฐ์ ํด์ ์๊ธด ์ค๋ฅ๋ค. ์์ ์ด 0์ด๋ผ๊ณ ๊ฐ์ ํด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ ๋ ฅ ๊ฐ์ 1์ฉ ๋นผ์ค์ผ ํ๋ค.
Solution
import java.io.*;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int num1 = Integer.parseInt(input[0]);
int num2 = Integer.parseInt(input[1]);
num1 -= 1; //์์ ์ 0์ด๋ผ ์๊ฐํ์ฌ 1์ ๋นผ์ค
num2 -= 1;
int result = 0;
result += Math.abs(num1 / 4 - num2 / 4);
result += Math.abs(num1 % 4 - num2 % 4);
System.out.println(result);
}
}
๐ฉ๐ป ํ๊ณ
ํ์ด๋ฅผ ์ฅํฉํ๊ฒ ์ ๊ธด ํ์ง๋ง ์ข์ ์ค๋ช ์ ์๋ ๊ฒ ๊ฐ๋ค. ๋จ์ํ ์์ ์ 0์ด๋ผ๊ณ ์๊ฐํ๊ณ -1์ ํด์คฌ์ผ๋ฉด ์๋์ ๊ฐ์ด ๋งํ ํ์ด๋ ์ ๋์์๊ฑฐ๋ค. ๋์ด๋์ ๋ฏธํ...
๋ด ํ์ด์ ํ์ ์ ์ธ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ ๋์ธ ๊ฒ ๊ฐ๋ค. ๊ฐ๋ก ๊ฑฐ๋ฆฌ๋ ๋๋จธ์ง๊ฐ ์์ ๋์ ์์ ๋๋ฅผ ๊ตฌ๋ถํด์ ๊ณ์ฐํ์ง๋ง ์ธ๋ก ๊ฑฐ๋ฆฌ๋ ๋ฐ์ง์ง ์์๋ ๊ฒ์ด๋ค. ๋ฌธ์ ๋ฅผ ์ฒ์ ๋ดค์ ๋ ๋ณต์กํ๊ฒ ์๊ฐํ์ง ์๊ณ ๋จ์ํ ์ํ์์ผ๋ก๋ง ์ง๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํด์ผ ํ๋ค๊ณ ์๊ฐํ ๊ฒ๊น์ง ์ํ๋๋ฐ.. ์ค์ค๋ก๊ฐ ์์ฝ๋ค. ๋ค์ ๋ฌธ์ ์์๋ ์ข ๋ ์ข์ ์ฝ๋๊ฐ ๋์ค๊ธธ!
๋งํ ํ์ด
//๋ ์ค์ ํฐ ๊ฐ, ์์ ๊ฐ ๋ถ๋ฆฌ
int max = Math.max(num1, num2);
int min = Math.min(num1, num2);
//์ง๊ฐ๊ฑฐ๋ฆฌ ๊ณ์ฐ
int height = Math.abs((max % 4) - (min % 4)); //๋๋จธ์ง ๊ฐ์ ๊ณ ์
int width = ((max / 4) + 1) - ((min / 4) + 1); //๋ชซ๋ ๋นผ๋
if (max % 4 == 0) { //4์ ๋ฐฐ์๋ฉด + 3
width += 1;
}
if (min % 4 == 0) {
width += 1;
}
System.out.println(width + height);
'๐งฉ Algorithm > [BOJ] Bronze' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 5086 : ๋ฐฐ์์ ์ฝ์ (Java/์ํ/Bronze 3) (0) | 2024.10.14 |
|---|---|
| BOJ 10810 : ๊ณต ๋ฃ๊ธฐ (Java/๊ตฌํ/Bronze 3) (2) | 2024.10.12 |
| BOJ 1284 : ์ง ์ฃผ์ (Java/๊ตฌํ/Bronze 3) (0) | 2024.10.12 |
| BOJ 1267 : ํธ๋ํฐ ์๊ธ (Java/๊ตฌํ/Bronze 3) (2) | 2024.10.12 |
| BOJ 9295 : ์ฃผ์ฌ์ (Java/๊ตฌํ/Bronze 4) (0) | 2024.10.10 |