๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/18111
- ํ ๋ ๋์ํํธ๋ ๋ํ ์ค๋น๋ฅผ ํ๋ค๊ฐ ์ง๋ฃจํด์ ธ์ ์๋๋ฐ์ค ๊ฒ์์ธ ‘๋ง์ธํฌ๋ํํธ’๋ฅผ ์ผฐ๋ค.
- ๋ง์ธํฌ๋ํํธ๋ 1 × 1 × 1(์ธ๋ก, ๊ฐ๋ก, ๋์ด) ํฌ๊ธฐ์ ๋ธ๋ก๋ค๋ก ์ด๋ฃจ์ด์ง 3์ฐจ์ ์ธ๊ณ์์ ์์ ๋กญ๊ฒ ๋ ์ ํ๊ฑฐ๋ ์ง์ ์ง์ ์ ์๋ ๊ฒ์์ด๋ค.
- lvalue๋ ์ธ๋ก N, ๊ฐ๋ก M ํฌ๊ธฐ์ ์งํฐ๋ฅผ ๊ณจ๋๋ค. ์งํฐ ๋งจ ์ผ์ชฝ ์์ ์ขํ๋ (0, 0)์ด๋ค. ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ์ด ์งํฐ ๋ด์ ๋
์ ๋์ด๋ฅผ ์ผ์ ํ๊ฒ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ ์ข
๋ฅ์ ์์
์ ํ ์ ์๋ค.
- ์ขํ (i, j)์ ๊ฐ์ฅ ์์ ์๋ ๋ธ๋ก์ ์ ๊ฑฐํ์ฌ ์ธ๋ฒคํ ๋ฆฌ์ ๋ฃ๋๋ค.
- ์ธ๋ฒคํ ๋ฆฌ์์ ๋ธ๋ก ํ๋๋ฅผ ๊บผ๋ด์ด ์ขํ (i, j)์ ๊ฐ์ฅ ์์ ์๋ ๋ธ๋ก ์์ ๋๋๋ค.
- 1๋ฒ ์์ ์ 2์ด๊ฐ ๊ฑธ๋ฆฌ๋ฉฐ, 2๋ฒ ์์ ์ 1์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. ๋ฐค์๋ ๋ฌด์์ด ๋ชฌ์คํฐ๋ค์ด ๋์ค๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๋นจ๋ฆฌ ๋ ๊ณ ๋ฅด๊ธฐ ์์ ์ ๋ง์ณ์ผ ํ๋ค.
- ‘๋ ๊ณ ๋ฅด๊ธฐ’ ์์ ์ ๊ฑธ๋ฆฌ๋ ์ต์ ์๊ฐ๊ณผ ๊ทธ ๊ฒฝ์ฐ ๋ ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์์ค.
- ๋จ, ์งํฐ ์๋์ ๋๊ตด ๋ฑ ๋น ๊ณต๊ฐ์ ์กด์ฌํ์ง ์์ผ๋ฉฐ, ์งํฐ ๋ฐ๊นฅ์์ ๋ธ๋ก์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- ๋ํ, ์์ ์ ์์ํ ๋ ์ธ๋ฒคํ ๋ฆฌ์๋ B๊ฐ์ ๋ธ๋ก์ด ๋ค์ด ์๋ค. ๋ ์ ๋์ด๋ 256๋ธ๋ก์ ์ด๊ณผํ ์ ์์ผ๋ฉฐ, ์์๊ฐ ๋ ์ ์๋ค.
- ๋ชฉ์ฌ๋ฅผ ์ถฉ๋ถํ ๋ชจ์ lvalue๋ ์ง์ ์ง๊ธฐ๋ก ํ์๋ค. ํ์ง๋ง ๊ณ ๋ฅด์ง ์์ ๋ ์๋ ์ง์ ์ง์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ ๋์ด๋ฅผ ๋ชจ๋ ๋์ผํ๊ฒ ๋ง๋๋ ‘๋ ๊ณ ๋ฅด๊ธฐ’ ์์ ์ ํด์ผ ํ๋ค.
- ์ฒซ์งธ ์ค์ N, M, B๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ M, N ≤ 500, 0 ≤ B ≤ 6.4 × 107)
- ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฐ๊ฐ M๊ฐ์ ์ ์๋ก ๋ ์ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค.
- (i + 2)๋ฒ์งธ ์ค์ (j + 1)๋ฒ์งธ ์๋ ์ขํ (i, j)์์์ ๋ ์ ๋์ด๋ฅผ ๋ํ๋ธ๋ค. ๋ ์ ๋์ด๋ 256๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
- ์ฒซ์งธ ์ค์ ๋ ์ ๊ณ ๋ฅด๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ๋ ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์์ค. ๋ต์ด ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ๊ทธ์ค์์ ๋ ์ ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ์ถ๋ ฅํ์์ค.
์์ด๋์ด
- ๋ ์ ๋์ด๊ฐ 0๋ถํฐ 256๊น์ง๋ผ๊ณ ํ์์ผ๋ฏ๋ก 0๋ถํฐ 256๊น์ง for๋ฌธ์ ๋๋ค.
- for๋ฌธ์ ๋๋ฉด์ ์๊ฐ์ด์ ๋จ์ ๋ธ๋ญ ์๋ฅผ ๊ณ์ฐํ ๋ณ์๋ฅผ ํญ์ ์ด๊ธฐํํด์ฃผ๋ฉฐ, ํด๋น ๋ ์ ๋์ด๊ฐ ๊ธฐ์ค ๋์ด๋ณด๋ค ๋์ผ๋ฉด ํด๋น ๋์ด๋งํผ ๋ธ๋ญ ์๋ฅผ ๋ํด์ฃผ๊ณ ๊ทธ ๋์ด๋งํผ 2๋ฅผ ๊ณฑํด์ ์๊ฐ์ด์ ๋ํด์ค๋ค.
- ๋ง์ฝ ํด๋น ๋ ์ ๋์ด๊ฐ ๊ธฐ์ค ๋์ด๋ณด๋ค ๋ฎ์ผ๋ฉด ํด๋น ๋์ด๋งํผ ๋ธ๋ญ ์๋ฅผ ๋นผ์ฃผ๊ณ ๋์ด๋งํผ ์๊ฐ์ด๋ฅผ ๋ํด์ค๋ค.
- ๋ ์ ๋ค ๋๊ณ ๋ ํ, ๋จ์ ๋ธ๋ญ์ ์๊ฐ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ ๊ณ์ฐ๋ ์ด๊ฐ ํ์ฌ ๊ฒฐ๊ณผ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด ๊ฒฐ๊ณผ์ด์ ๋ ๋์ด๋ฅผ ๊ฐฑ์ ํด์ค๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- ์ฒ์์ DFS๋ก ํ๋ ค๋ค๊ฐ... ์คํจํด์ 3์ค for๋ฌธ์ผ๋ก ํ๊ฒ ๋์๋ค... ์ผ๋จ ์ํ์ผ๋ก ํ์ด๋๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ณด๋ ํด์ผ๊ฒ ๋ค...!
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ18111 {
static int N;
static int M;
static int B;
static int ground[][];
static int result;
static int result2;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// ์ด
N = Integer.parseInt(st.nextToken());
// ํ
M = Integer.parseInt(st.nextToken());
// ๋
์ ๊ฐ์
B = Integer.parseInt(st.nextToken());
// ๋
์ ๋์ด๋ฅผ ์ ์ฅํ ๋ฐฐ์ด
ground = new int[N][M];
// ์ด๋ฅผ ์ ์ฅํ ๋ณ์
result = Integer.MAX_VALUE;
// ๋
์ ๋์ด๋ฅผ ์ ์ฅํ ๋ณ์
result2 = 0;
// ๋ฐฐ์ด์ ๊ฐ ์ ์ฅ
for(int i = 0; i < N; i++){
StringTokenizer st2 = new StringTokenizer(br.readLine());
for(int j = 0; j < M; j++){
int n = Integer.parseInt(st2.nextToken());
ground[i][j] = n;
}
}
for(int h = 0; h <= 256; h++){
// ์๊ฐ์ด๋ฅผ ๊ณ์ฐํ ๋ณ์
int s = 0;
// ๋จ์ ๋ธ๋ญ ์
int b = B;
for(int i = 0; i < N; i++){
for(int j = 0; j < M; j++){
if(ground[i][j] > h){
int height = ground[i][j] - h;
// ๊ธฐ์ค ๋
๋ณด๋ค ํ์ฌ ๋
๋์ด๊ฐ ๋์ผ๋ฏ๋ก ๋จ์ ๋
์์ ๋ํด์ค
b = b + height;
// ๋ธ๋ญ์ ์ ๊ฑฐํ์ฌ ์ธ๋ฒคํ ๋ฆฌ์ ๋ฃ์์ผ๋ฏ๋ก ๋ฃ์ ๋ธ๋ก ์ * 2์ด
s = s + 2*height;
}
else if(ground[i][j] < h){
int height = h - ground[i][j];
// ๊ธฐ์ค ๋
๋ณด๋ค ํ์ฌ ๋
๋์ด๊ฐ ๋ฎ์ผ๋ฏ๋ก ๋จ์ ๋
์์ ๋นผ์ค
b = b - height;
// ๋ธ๋ญ์ ์ขํ์ ๋ฃ์ด์ ๋ฃ์ ๋ธ๋ก ์ * 1์ด
s = s + height;
}
}
}
// ๋ธ๋ญ์๊ฐ 0๊ฐ๋ณด๋ค ํฌ๊ณ ๊ณ์ฐ๋ ์ด๊ฐ ๊ฒฐ๊ณผ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด
// ๊ฒฐ๊ณผ์ด์ ๋
๋์ด๋ฅผ ๊ฐฑ์
if(b >= 0 && s <= result){
result = s;
result2 = h;
}
}
System.out.println(result + " " + result2);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 21736 ํ๋ด๊ธฐ๋ ์น๊ตฌ๊ฐ ํ์ํด (0) | 2024.08.16 |
---|---|
[Java] BOJ 18870 ์ขํ ์์ถ (2) | 2024.08.15 |
[Java] BOJ 11724 ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2024.08.13 |
[Java] BOJ 2805 ๋๋ฌด ์๋ฅด๊ธฐ (2) | 2024.08.12 |
[Java] BOJ 11279 ์ต๋ ํ (0) | 2024.08.11 |