본문 바로가기
알고리즘/SWEA

[SWEA / View / JAVA]

by KDW999 2023. 5. 11.

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

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

조망권 확보를 하려면 양 옆 2공간이 비어야한다.

그러려면 빌딩의 높이가 양 옆 2칸에 있는 빌딩들의 높이보다 높아야한다.

배열로 빌딩들의 높이를 저장하고 반복문을 돌면서 -2, +2인덱스에 있는 빌딩 높이와 비교 후 작다면 다음 빌딩 검사,

크다면 현재 빌딩 높이에서 -2 ~ +2 빌딩 중 가장 큰 높이를 빼주면 조망권을 확보한 세대 수가 된다.

이 작업을 마지막 빌딩(N-3)까지 반복 

 

++ -2 ~ +2까지 매 번 높이를 비교했는데 이제 보니 이러면 +1까지 높이를 저장했다가 +2에서 continue로 넘어갈 수도 있겠다싶더라

-2 ~ +2까지 다 검사 후에 빌딩 높이를 저장해주는 게 좋을까?

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException  {
	    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	    
	    for(int t=1; t<=10; t++) {
	    	int N = Integer.parseInt(br.readLine()); // 건물 수
	    	
	    	int[] building = new int[N];
	    	
	    	StringTokenizer st = new StringTokenizer(br.readLine());
	    	for(int i=0; i<N; i++) building[i] = Integer.parseInt(st.nextToken());
	    	int count = 0;
	    	
	    	// 조건문 4개를 쓰던가, 반복문 2개로 현재 양 옆 빌딩 검사하던가
	    	for(int i=2; i<N-2; i++) { 
	    		int maxHeight = 0;
	    		
	    		if(building[i-2] > building[i]) continue;
	    		maxHeight = Math.max(maxHeight, building[i-2]);
	    		if(building[i-1] > building[i]) continue;
	    		maxHeight = Math.max(maxHeight, building[i-1]);
	    		if(building[i+1] > building[i]) continue;
	    		maxHeight = Math.max(maxHeight, building[i+1]);
	    		if(building[i+2] > building[i]) continue;
	    		maxHeight = Math.max(maxHeight, building[i+2]);
	    		
	    		count += building[i] - maxHeight; 
	    		
	    	}
	    	System.out.println("#"+t+" "+count);
	    }
	}
}

 

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA / 파리 퇴치 / JAVA]  (0) 2023.05.15
[SWEA / Flattern / JAVA]  (0) 2023.05.14
[SWEA / 구구단 걷기 / JAVA]  (1) 2023.05.11
[SWEA / 원 안의 점 / JAVA]  (0) 2023.05.09
[SWEA / 아름이의 돌 던지기 / JAVA → C++]  (0) 2023.05.08

댓글