문제
참가자들은 가장 처음 블록 위에서 가장 마지막 블록의 위로 이동해야 한다.
주어진 장애물에서 올라갈 때의 높이 변화와 내려갈 때의 높이 변화 둘 각각에 대해
가장 높이 변화가 심한 부분을 난이도라 하기로 했다.
장애물들이 주어질 때, 올라갈 때와 내려갈 때의 난이도를 출력하는 문제.
풀이방법
각 장애물에서 다음 장애물과의 차를 구한다. 이 때, 차가 양수이면 올라가는 경우이고, 음수이면 내려가는 경우이다.
올라가는 경우와 내려가는 경우 각각의 최댓값을 구한다.
소스코드
package samsung;
import java.util.*;
public class s_6730 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int test = sc.nextInt();
for(int t = 1; t <= test; t++) {
int n = sc.nextInt();
int[] a = new int[n];
for(int i = 0; i < n; i++) {
a[i] = sc.nextInt();
}
int cur = a[0];
int in = 0;
int de = 0;
for(int i = 1; i < n; i++) {
if(cur > a[i]) {
int gab = cur - a[i];
de = Math.max(gab, de);
}else {
int gab = a[i] - cur;
in = Math.max(gab, in);
}
cur = a[i];
}
System.out.println("#" + t + " " + in + " " + de);
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 7087. 문제 제목 붙이기 (0) | 2020.02.23 |
---|---|
[SWEA] 6913. 동철이의 프로그래밍 대회 (0) | 2020.02.23 |
[SWEA] 6692. 다솔이의 월급 상자 (0) | 2020.02.23 |
[SWEA] 5789. 현주의 상자 바꾸기 (0) | 2020.02.23 |
[SWEA] 3260. 두 수의 덧셈 (0) | 2020.02.23 |
댓글