
⚠️ 주의!
SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.
SWEA에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.
D2치고는 다른 문제와의 차이가…
[SW Expert Academty] 16504. Gravity
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제에 대한 이해가 막상 푸는 거 보다 더 오래 걸린 특이한 케이스.
낙차에 대한 설명이 너무 부족해서 사람이 헷갈렸다.
일단 낙차의 최대값을 구하랬으니 max값을 저장해두는 게 낫다.
그리고 여기서 이중for문, 2중 배열이 나오는데, i와 i 아래에 있는(정확히는 떨어졌을 때 i 옆에 있는 값들인 j)를 확인하기 위함이다. j가 i보다 큰지 파악하고, 클 경우 count한 뒤에 최종값에서 빼야한다.
문제를 입출력하기 위한 부분을 제외하고 핵심은 바로 이것.
int max = 0;
for(int i = 0; i < n - 1; i++){
int count = 0;
for(int j = i + 1; j < n; j++){
if(arr[j] >= arr[i]) {
count++;
}
}
max = Math.max(max, n - 1 - i - count);
}
여기서 n은 두 번째 입력인 쌓여있는 상자의 수로, n - 1을 하는 까닭은 j 때문에 경계선 처리를 하기 위함이다.
마지막으로 max값과의 비교가 있는데 n - 1 - i는 - count는 아래에 깔리는 상자의 개수를 이야기한다.
이렇게 갱신해주면 된다.
정답
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[n];
for(int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int max = 0;
for(int i = 0; i < n - 1; i++){
int count = 0;
for(int j = i + 1; j < n; j++){
if(arr[j] >= arr[i]) {
count++;
}
}
max = Math.max(max, n - 1 - i - count);
}
System.out.println("#" + test_case + " " + max);
}
}
}
그런데 더 간단한 방법이 있었다.
for (int i = 0; i < n; i++) {
int fallDistance = 0;
for (int j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
fallDistance++;
}
}
max = Math.max(max, fallDistance);
}
2중 for문은 유지하되, arr[i]가 arr[j]보다 클 경우에만 fallDistance를 센다.
이쪽이 더 간단하다.
'코테런 > SWEA(알고리즘 수업)' 카테고리의 다른 글
| [코딩 테스트 RUN] SWEA 수업 : 1204. 최빈수 구하기 (0) | 2026.03.02 |
|---|---|
| [코딩 테스트 RUN] SWEA 수업 : 2063. 중간값 찾기 (0) | 2026.03.02 |
| [코딩 테스트 RUN] SWEA 수업 : 1984. 중간 평균값 구하기 (0) | 2026.03.02 |
| [코딩 테스트 RUN] SWEA 수업 : 2068.최대수 구하기 (0) | 2026.03.02 |
| [코딩 테스트 RUN] SWEA 수업 : 1206.View (0) | 2026.03.02 |