https://softeer.ai/practice/7374
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
문제풀이법
- 한 줄의 땅 높이들을 저장하는 ArrayList 생성
- 땅의 모든 높이 값들을 배열에 저장하면서, 동시에 가로열의 높이를 비교
- 비교 방법은 오름차순 정렬 후 가장 큰 값이 가장 작은 값(첫 번째 인덱스)과 같으면 0을 출력
아니면 가장 큰 값에서 첫 번째 인덱스와의 차이, 그리고 가장 큰 값과 두 번째 인덱스와의 차이 값이 땅을 고르게 만드는 비용이 됨 - 이전에 필요한 비용과 비교 후 더 작은 값으로 대체, ArrayList 초기화
- 가로열 비교 후 세로열도 순회하면서 비교
코드
import java.io.*;
import java.util.*;
public class Main {
public static final List<Integer> row = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int[][] ground = new int[3][3];
int currentCost;
int answer = 4;
for (int i = 0; i < 3; i++) {
st = new StringTokenizer(in.readLine());
for (int j = 0; j < 3; j++) {
int height = Integer.parseInt(st.nextToken());
ground[i][j] = height;
row.add(height);
}
Collections.sort(row);
currentCost = 0;
if (row.get(0) == row.get(2)) {
System.out.println(0);
return;
} else {
currentCost = (row.get(2) - row.get(0)) + (row.get(2) - row.get(1));
}
if (currentCost < answer) {
answer = currentCost;
}
row.clear();
}
for (int i = 0; i < 3; i++) {
currentCost = 0;
for (int j = 0; j < 3; j++) {
row.add(ground[j][i]);
}
Collections.sort(row);
if (row.get(0) == row.get(2)) {
System.out.println(0);
return;
} else {
currentCost = (row.get(2) - row.get(0)) + (row.get(2) - row.get(1));
}
if (currentCost < answer) {
answer = currentCost;
}
row.clear();
}
System.out.println(answer);
}
}
'Development > CodingTest' 카테고리의 다른 글
[String] [한양대 HCPC 2023] X marks the Spot Java 풀이 ( + 시간 초과 해결) (0) | 2024.02.01 |
---|---|
[Array] Softeer(소프티어) level 3 우물 안 개구리 Java 풀이 (0) | 2024.01.31 |
[Greedy] Softeer(소프티어) level 2 연탄의 크기 java 풀이 (1) | 2024.01.30 |
[Greedy] Softeer(소프티어) level 3 강의실 배정 java 풀이 (+Comparator에 관하여) (1) | 2024.01.29 |
[DP] Softeer(소프티어) level 3 징검다리 Java 풀이 (+ 테스트 케이스) (0) | 2024.01.27 |