[Baekjoon] 2828_์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์
๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/2828)
< ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ >
๋ฌธ์ ํ์ด
์ฌ๊ณผ์ ์์น์ ๋ฐ๋ผ ์ผ์ชฝ์ผ๋ก ์ด๋ํ ์ง ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ์ง ๋ฐ๊ตฌ๋๊ฐ ์ด๋ํด์ผ ํ๋ ๊ฑฐ๋ฆฌ๊ฐ ์ต์์ธ ๊ฐ์ ์ฐพ์ ์ด๋ํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _2828_ { // ์ฌ๊ณผ ๋ด๊ธฐ ๊ฒ์
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int start = 1;
int end = start + m - 1;
int j = Integer.parseInt(bf.readLine());
int result = 0;
for (int i = 0; i < j; i++) {
int k = Integer.parseInt(bf.readLine());
if (start <= k && end >= k) {
continue;
} else {
if (Math.abs(k - start) > Math.abs(k - end)) {
result += Math.abs(k - end);
start += Math.abs(k - end);
end += Math.abs(k - end);
} else if(Math.abs(k - start) < Math.abs(k - end)) {
result += Math.abs(k - start);
end -= Math.abs(k - start);
start -= Math.abs(k - start);
}else {
if(k < start) {
result += Math.abs(k - start);
end -= Math.abs(k - start);
start -= Math.abs(k - start);
}else {
result += Math.abs(k - end);
start += Math.abs(k - end);
end += Math.abs(k - end);
}
}
}
}
System.out.println(result);
}
}
Main
๋ณ์)
n : ์คํฌ๋ฆฐ ์นธ
m : ๋ฐ๊ตฌ๋ ์
start , end : ๋ฐ๊ตฌ๋์ ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์ธ๋ฑ์ค
j : ์ฌ๊ณผ์ ๊ฐ์
result : ๋ฐ๊ตฌ๋๊ฐ ์ด๋ํด์ผ ํ๋ ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ
k : ์ฌ๊ณผ๊ฐ ๋จ์ด์ง๋ ์์น
- ์คํฌ๋ฆฐ ์(n), ๋ฐ๊ตฌ๋ ์(m) ์ ๋ ฅ
- ์ฌ๊ณผ์ ๊ฐ์(j) ์ ๋ ฅ
- ์ฌ๊ณผ์ ์๋งํผ ์ฌ๊ณผ๊ฐ ๋จ์ด์ง๋ ์์น(k) ์ ๋ ฅ
: ๋ฐ๊ตฌ๋์ ์์น๊ฐ ์ฌ๊ณผ๊ฐ ๋จ์ด์ง๋ ์์น๋ผ๋ฉด PASS
: ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ต์ ์ด๋ ๊ฐ์ด๋ผ๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
: ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ต์ ์ด๋ ๊ฐ์ด๋ผ๋ฉด ์ผ์ชฝ์ผ๋ก ์ด๋
: ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฒ๊ณผ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฐ์ด ๊ฐ์ผ๋ฉด ๋ฐ๊ตฌ๋์ ์๊ฐ ํ๋๋ผ๋ ๋ป์ด๋ฏ๋ก ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ ์ง ํ๋จํด์ ์ด๋
- ๋ฐ๊ตฌ๋๊ฐ ์ด๋ํด์ผ ํ๋ ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ(result) ์ถ๋ ฅ
