알고리즘(종합)/Lv.3

1206 - View 조망권

ch.0 2022. 11. 14. 18:31


package test;

import java.io.IOException;
import java.util.Scanner;

public class Solution {

	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in);

		 int test = 10;

		 for (int k = 0; k < test; k++) {


		int total=0;
		int w = sc.nextInt();
		int[][] array = new int[255][w];

		for (int i = 0; i < w; i++) {
			int h = sc.nextInt();

			for (int j = 0; j < h; j++) {
				array[j][i] = 1;
			}
		}



		for (int i = 2; i < w-2; i++) {
			for (int j = 0; j < 255; j++) {
				int sum = 0;
				for (int m = -2; m < 3; m++) {
					if (m == 0) {

					} else {
						sum += array[j][i] - array[j][i + m];
					}
				
				}
				if(sum==4) {
					total++;
				}
			}

		}
		
		
		System.out.println("#"+(k+1)+" "+total);

		}
	}

}

1. 배열에서 높이에 속하는 만큼 1을 채워 빌딩을 만들어준다.

 

2. 배열의 세로를 기준으로 두고 가로+/- 2만큼을 뺀다. 

   1-0= 1 가 4번 반복된다는건 1을 기준으로 양쪽에 2개만큼 비어있다는것이다

 

3. 기준에 합하는 갯수만큼 더하여 준다.