โ ๋ถ๋ฅ
๋ง์ ์กฐ๊ฑด ๋ถ๊ธฐ, ๊ตฌํ
๐ ๋ฌธ์ ์ค๋ช
๋๊ทผ์ด๋ ๋ฌด์ธ ๊ฒฝ๋น ํ์ฌ ๊ฒฝ๋น์์ผ๋ก ํญ์ ๋๊ธฐํ๊ณ ์๋ค๊ฐ ํธ์ถ์ด ๋ค์ด์ค๋ฉด ๊ฒฝ๋น์ฐจ๋ฅผ ๋ชฐ๊ณ ๊ทธ ๊ณณ์ผ๋ก ๋ฌ๋ ค๊ฐ์ผ ํ๋ค. ๋๊ทผ์ด๊ฐ ๋ด๋นํ๊ณ ์๋ ๊ณณ์ ์ง์ฌ๊ฐํ ๋ชจ์์ ๋ธ๋ก์ผ๋ก ๋ธ๋ก ์ค๊ฐ์ ๊ฐ๋ก์ง๋ฌ ์ฐจ๊ฐ ํต๊ณผํ ๋งํ ๊ธธ์ด ์๋ค. ์ด ๋ธ๋ก ๊ฒฝ๊ณ์ ๋ฌด์ธ ๊ฒฝ๋น๋ฅผ ์๋ขฐํ ์์ ๋ค์ด ์๋ค.
์๋ฅผ ๋ค์ด ๊ฐ๋ก์ ๊ธธ์ด๊ฐ 10, ์ธ๋ก์ ๊ธธ์ด๊ฐ 5์ธ ๋ธ๋ก์ ๊ฒฝ๊ณ์ ๋ฌด์ธ ๊ฒฝ๋น๋ฅผ ์๋ขฐํ 3๊ฐ์ ์์ ์ด ์๋ค๊ณ ํ์. <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ด๋ค์ 1, 2, 3์ผ๋ก ํ์๋์ด ์๊ณ , ๋๊ทผ์ด๋ X๋ก ํ์ํ ์์น์ ์๋ค.
1๋ฒ ์์ ์์ ํธ์ถ์ด ๋ค์ด ์์ ๋ ๋๊ทผ์ด๊ฐ ๋ธ๋ก์ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋์ ์ด๋ํ๋ฉด ์ด๋ ๊ฑฐ๋ฆฌ๊ฐ 12๊ฐ ๋๋ค. ๋ฐ๋ฉด ๋ฐ์๊ณ๋ฐฉํฅ์ผ๋ก ๋์ ์ด๋ํ๋ฉด ์ด๋ ๊ฑฐ๋ฆฌ๋ 18์ด ๋๋ค. ๋ฐ๋ผ์ ๋๊ทผ์ด๊ฐ 1๋ฒ ์์ ์ผ๋ก ๊ฐ๋ ์ต๋จ ๊ฑฐ๋ฆฌ๋ 12๊ฐ ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ๋๊ทผ์ด์ ์์น์์ 2๋ฒ ์์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ 6, 3๋ฒ ์์ ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ 5๊ฐ ๋๋ค.
๋ธ๋ก์ ํฌ๊ธฐ์ ์์ ์ ๊ฐ์ ๋ฐ ์์น ๊ทธ๋ฆฌ๊ณ ๋๊ทผ์ด์ ์์น๊ฐ ์ฃผ์ด์ง ๋ ๋๊ทผ์ด์ ์์น์ ๊ฐ ์์ ์ฌ์ด์ ์ต๋จ ๊ฑฐ๋ฆฌ์ ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
โจ ์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ธ๋ก์ ๊ฐ๋ก์ ๊ธธ์ด์ ์ธ๋ก์ ๊ธธ์ด๊ฐ ์ฐจ๋ก๋ก ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์ ์์ ์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๋ธ๋ก์ ๊ฐ๋ก์ ๊ธธ์ด์ ์ธ๋ก์ ๊ธธ์ด, ์์ ์ ๊ฐ์๋ ๋ชจ๋ 100์ดํ์ ์์ฐ์์ด๋ค. ์ด์ด ํ ์ค์ ํ๋์ฉ ์์ ์ ์์น๊ฐ ์ฃผ์ด์ง๋ค. ์์ ์ ์์น๋ ๋ ๊ฐ์ ์์ฐ์๋ก ํ์๋๋ค. ์ฒซ์งธ ์๋ ์์ ์ด ์์นํ ๋ฐฉํฅ์ ๋ํ๋ด๋๋ฐ, 1์ ๋ธ๋ก์ ๋ถ์ชฝ, 2๋ ๋ธ๋ก์ ๋จ์ชฝ, 3์ ๋ธ๋ก์ ์์ชฝ, 4๋ ๋ธ๋ก์ ๋์ชฝ์ ์์ ์ด ์์์ ์๋ฏธํ๋ค. ๋์งธ ์๋ ์์ ์ด ๋ธ๋ก์ ๋ถ์ชฝ ๋๋ ๋จ์ชฝ์ ์์นํ ๊ฒฝ์ฐ ๋ธ๋ก์ ์ผ์ชฝ ๊ฒฝ๊ณ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ด๊ณ , ์์ ์ด ๋ธ๋ก์ ๋์ชฝ ๋๋ ์์ชฝ์ ์์นํ ๊ฒฝ์ฐ ๋ธ๋ก์ ์์ชฝ ๊ฒฝ๊ณ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ๋ธ๋ค. ๋ง์ง๋ง ์ค์๋ ๋๊ทผ์ด์ ์์น๊ฐ ์์ ์ ์์น์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฃผ์ด์ง๋ค. ์์ ์ ์์น๋ ๋๊ทผ์ด์ ์์น๋ ๋ธ๋ก์ ๊ผญ์ง์ ์ด ๋ ์ ์๋ค.
๐ฅ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋๊ทผ์ด์ ์์น์ ๊ฐ ์์ ์ฌ์ด์ ์ต๋จ ๊ฑฐ๋ฆฌ์ ํฉ์ ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ํ์ด
- ๋๋ ๋๊ทผ์ด์ ์์ ์ด ๊ฐ์ ์์น์ ์๋ ๊ฒฝ์ฐ, ์์ ์๋ ๊ฒฝ์ฐ, ๋ง์ฃผ๋ณด๋ ๊ฒฝ์ฐ๋ก ๋๋์ด์ ํ์ด๋ณด์๋ค.
- ์กฐ๊ธ ๋ง์ฃผ๋ณด๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์กฐ๊ธ ๋ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ ๊ฒ ๊ฐ์์ ๊ณ ๋ฏผ ์ค์ด๋ค.
- ๋ค๋ฅธ ๋ถ๋ค์ 0,0๋ถํฐ ์๊ณ๋ฐฉํฅ์ผ๋ก ์ธ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ์ ๋ถ๋ค๋ ๊ณ์ ๊ฒ ๊ฐ๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
// br, st, sb ์ ์ธ ๋ฐ ์ด๊ธฐํ
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int w, h, testCase, minDist = 0;
public static void main(String[] args) throws IOException {
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
// ๋ธ๋ก์ ๊ฐ๋ก ์ธ๋ก ๊ธธ์ด ์ด๊ธฐํ
w = Integer.parseInt(st.nextToken());
h = Integer.parseInt(st.nextToken());
// ํ
์คํธ ์ผ์ด์ค ๊ฐ์ ์
๋ ฅ ๋ฐ๊ธฐ
testCase = Integer.parseInt(br.readLine());
// ์์น์ ๊ธธ์ด ๋ฐฐ์ด ์ ์ธ
int[] d = new int[testCase + 1];
int[] l = new int[testCase + 1];
// ํ
์คํธ์ผ์ด์ค ๊ฐ์ + 1(๋๊ทผ)๋งํผ ๋ฐ๋ณตํ๋ฉฐ ์์น์ ๊ธธ์ด์
๋ ฅ ๋ฐ๊ธฐ
for (int i = 0; i <= testCase; i++) {
st = new StringTokenizer(br.readLine());
d[i] = Integer.parseInt(st.nextToken());
l[i] = Integer.parseInt(st.nextToken());
}
System.out.println(calculate(d, l));
}
public static int calculate(int[] d, int[] l) {
// ํ
์คํธ์ผ์ด์ค๋งํผ ๋ฐ๋ณต
for (int i = 0; i < testCase; i++) {
// 1. ๋๊ทผ๊ณผ ์์ ์ด ๊ฐ์ ์์น์ ์๋ ๊ฒฝ์ฐ
if (d[i] == d[testCase]) {
minDist += Math.abs(l[testCase] - l[i]);
// 2. ๋๊ทผ๊ณผ ์์ ์ด ๋ง์ฃผ๋ณด๋ ๊ฒฝ์ฐ
} else if (d[i] == 1 && d[testCase] == 2 || d[i] == 2 && d[testCase] == 1) {
// ์, ํ๋ก ๋ง์ฃผ๋ณด๋ ๊ฒฝ์ฐ
minDist += (l[i] + l[testCase] <= 2 * w - (l[i] + l[testCase])) ?
l[i] + l[testCase] + h : 2 * w - (l[i] + l[testCase]) + h;
} else if (d[i] == 3 && d[testCase] == 4 || d[i] == 4 && d[testCase] == 3) {
// ์ข, ์ฐ๋ก ๋ง์ฃผ๋ณด๋ ๊ฒฝ์ฐ
minDist += (l[i] + l[testCase] <= 2 * h - (l[i] + l[testCase])) ?
l[i] + l[testCase] + w : 2 * h - (l[i] + l[testCase]) + w;
// 3. ๋๊ทผ๊ณผ ์์ ์ด ์์ ์์นํ ๊ฒฝ์ฐ
} else {
if (d[i] % 2 == 1)
minDist += l[testCase];
else
minDist += w - l[testCase];
if (d[testCase] % 2 == 1)
minDist += l[i];
else
minDist += h - l[i];
}
}
return minDist;
}
}
๊ทธ๋ฆฌ๊ณ , ๋๋์ด IM ๋ฑ๊ธ ๋ฌธ์ ์ง๋ค์ ๋ชจ๋ ํ๊ธดํ๋ค.
4์ฃผ๋์ ์คํฐ๋ ํ๋ฉด์ ์ผ์ฃผ์ผ์ 4๋ฌธ์ ์ฉ ํ์๋๋ฐ, ๋ธ๋ก ์ฆ๋ ๋ชป ํ๋ ๋ด๊ฐ ์ค๋ฒ 1์ด๋ผ๋... ๊ทธ๋๋ ์ฑ์ฅํ ๊ฒ ๊ฐ์ ๋ฟ๋ฏํ๋ค. ใ ใ ใ ใ
