BOJ_S2_18111
๐ [S2_18111] ๋ง์ธํฌ๋ํํธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, M, B;
static int max_floor, min_floor;
static int time, height;
static int[][] map;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// **** input start ****
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
B = Integer.parseInt(st.nextToken());
map = new int[N][M];
max_floor = Integer.MIN_VALUE;
min_floor = Integer.MAX_VALUE;
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < M; j++) {
map[i][j] = Integer.parseInt(st.nextToken());
// ์ต๋์ธต ์ต์์ธต ๊ตฌํ๊ธฐ
max_floor = Math.max(max_floor, map[i][j]);
min_floor = Math.min(min_floor, map[i][j]);
}
}
// **** input end ****
// ์ธต๋ง๋ค ์ฒดํฌ
check();
System.out.println(time + " " + height);
} // main end
// ์ธต์ ๊ธฐ์ค์ผ๋ก ์ฒดํฌ
static void check() {
// ๊ฒฐ๊ณผ ์๊ฐ
time = Integer.MAX_VALUE;
// ๊ฒฐ๊ณผ ์ธต
height = -1;
for (int i = min_floor; i <= max_floor; i++) {
// ์ธ๋ฒคํ ๋ฆฌ
int invent = B;
// ์ฒดํฌํ๋ ์๊ฐ
int second = 0;
for(int j=0; j<N; j++) {
for(int z=0; z<M; z++) {
// ์ขํ์ ์ธต ์ฐจ์ด
int minus = map[j][z] - i;
// ์ขํ๊ฐ ๋ ํฐ ๊ฒฝ์ฐ 1๋ฒ ์คํ
if(minus > 0) {
// ์๊ฐ ์ถ๊ฐ
second += (Math.abs(minus)*2);
// ์ธ๋ฒค ์ถ๊ฐ
invent += Math.abs(minus);
}
// ์ขํ๊ฐ ๋ ์์ ๊ฒฝ์ฐ 2๋ฒ ์คํ
else if(minus < 0) {
// ์๊ฐ ์ถ๊ฐ
second += Math.abs(minus);
// ์ธ๋ฒค ๋นผ๊ธฐ
invent -= Math.abs(minus);
}
}
}
// ์กฐ๊ฑด ๋ถํฉ
if(invent >= 0) {
// ๊ฐ์ฅ ์งง์ ์๊ฐ์ธ ๊ฒฝ์ฐ
if(second <= time) {
// ์๊ฐ, ์ธต ๊ฐฑ์
time = second;
height = i;
}
}
}
}
} // class end
๐ค ๋์ ์๊ฐ
์ฒ์์ ์ํ์ผ๋ก ๋ชจ๋ ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ์ฐํด์ ์ต์์ธ ์๊ฐ์ ์ ํํ๋ ค ํ์ผ๋.. ์๊ฐ ๋ณต์ก๋๊ฐ ์ด๊ณผํ๋ ๊ฒ์ ์๋ฉด์๋ ๊ฐ์ง์น๊ธฐ๋ฅผ ์ํ๋ฉด ๋๊ฒ ์ง๋ผ๋ ์๊ฐ์ ๊ฐ์ก๋คโฆ
ํฐ ์ค ์ฐ ์ด ์ ๋ค .. ใ
๊ทธ๋์ ๋น ๋ฅด๊ฒ ๋ค ์ง์ฐ๊ณ ๋ค์ ์๊ฐ์ ํด๋ณด๋
๋น์ทํ ๋ฐฉ๋ฒ์ด์ง๋ง ํฐ ๊ธฐ์ค์ map์ ์ขํ๊ฐ ์๋ ์ธต์ผ๋ก ๊ธฐ์ค์ ์ก๊ณ ํ๋ฉด 3์ค for๋ฌธ์ธ๋ฐ ๊ทธ๊ฒ๋ ์ธต์ ๋์ด๋ ์ต๋ 256์ด๋ผ ์๊ฐ ๋ณต์ก๋์ ๋๋ ์์ ๋ฒ์ด๋ ์ ์์๋ค.
๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ขํ์ ์ต๋ ์ธต๊ณผ ์ต์ ์ธต์ ๊ตฌํด ๋ชจ๋ ์ธต(i)์์ ํ์ธํ๋ค.
- ๋ง์ฝ ์ขํ๊ฐ i ๋ณด๋ค ํด ๊ฒฝ์ฐ 1๋ฒ ์์ ์ ์คํํ๋ค.
- ๋ง์ฝ ์ขํ๊ฐ i ๋ณด๋ค ์์ ๊ฒฝ์ฐ 2๋ฒ ์์ ์ ์คํํ๋ค.
- ์ธ๋ฒค์ด 0๋ณด๋ค ์์๊ฒฝ์ฐ๋ ํต๊ณผ ( ์กฐ๊ฑด์ ์ด๊ธ๋๋ค )
- i ๋ง๋ค ์๊ฐ๊ณผ ๊ฒฐ๊ณผ ์ธต์ ๊ตฌํด ์๊ฐ์ด ์ค์ด๋ค๋๋ง๋ค ๊ฐฑ์ ์ ํด์ค๋ค.