본문 바로가기
Problem Solving/SWEA

[SWEA] 6730. 장애물 경주 난이도

by 테리는당근을좋아해 2020. 2. 23.

문제

참가자들은 가장 처음 블록 위에서 가장 마지막 블록의 위로 이동해야 한다.

주어진 장애물에서 올라갈 때의 높이 변화와 내려갈 때의 높이 변화 둘 각각에 대해

가장 높이 변화가 심한 부분을 난이도라 하기로 했다.


장애물들이 주어질 때, 올라갈 때와 내려갈 때의 난이도를 출력하는 문제.

 

풀이방법

각 장애물에서 다음 장애물과의 차를 구한다. 이 때, 차가 양수이면 올라가는 경우이고, 음수이면 내려가는 경우이다.

 

올라가는 경우와 내려가는 경우 각각의 최댓값을 구한다.

 

소스코드

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);
		}
	}
}

 

댓글