https://www.acmicpc.net/problem/18111
18111번: 마인크래프트
팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게
www.acmicpc.net
Java 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int minsec = Integer.MAX_VALUE;;
int height = 0;
int max = -1;
int min = 257;
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int[][] arr = new int[n][m];
for(int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0; j < m; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
max = Math.max(max, arr[i][j]);
min = Math.min(min, arr[i][j]);
}
}
for(int i = max; i >= min; i--) {
int sec = 0;
int inv = b;
for(int j = 0; j < n; j++) {
for(int k = 0; k < m; k++) {
if(arr[j][k] > i) {
sec += 2 * (arr[j][k] - i);
inv += arr[j][k] - i;
}
else if(arr[j][k] < i) {
sec += i - arr[j][k];
inv -= i - arr[j][k];
}
}
}
if(inv >= 0 && minsec > sec) {
height = i;
minsec = sec;
}
}
System.out.println(minsec+" "+height);
}
}
'백준' 카테고리의 다른 글
백준 15988 1, 2, 3 더하기 3(Java) (0) | 2023.02.10 |
---|---|
백준 15664 N과 M (10)(Java) (0) | 2023.02.10 |
백준 2477 참외밭(Java) (0) | 2023.02.10 |
백준 1965 상자넣기(Java) (0) | 2023.02.10 |
백준 5397 키로커(Java) (0) | 2023.02.10 |