본문 바로가기

Java/SWEA

[JAVA] SWEA 1206. [S/W 문제해결 기본] 1일차 - View

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV134DPqAA8CFAYh&categoryId=AV134DPqAA8CFAYh&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=JAVA&select-1=3&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

 

 

정답 

 

import java.util.Scanner;

class Solution
{
	public static void main(String args[]) throws Exception
	{
		
		Scanner sc = new Scanner(System.in);

		for(int tc = 1; tc <= 10; tc++)
		{
		
			int N = sc.nextInt(); //건물의 개수 

			int height[] = new int[N]; //건물의 높이 
			int answer = 0; //조망권이 확보된 세대 
			
			//입력받기
			for(int i=0; i<height.length; i++)
			{
				height[i] = sc.nextInt();
			}
			
            for (int i = 2; i < N - 2; i++) {
                int max = Math.max(height[i - 2], Math.max(height[i - 1], Math.max(height[i + 1], height[i + 2])));
                if (height[i] - max > 0) // 좌 우 건물 높이의 최댓값보다 현재 건물의 높이가 높으면
                    answer += height[i] - max; 
            }
			
            System.out.printf("#%d %d\n",tc,answer);
			
		}
	}
}