코딩테스트

백준 옥상 정원 꾸미기(6198번)

코드 죄수 2022. 8. 29. 18:37

이 문제는 태그에 스택을 이용하는 문제라고 써 있었지만 호기심으로 스택을 사용하지 않았다.

따라서 배열을 활용하여 문제를 풀었다.

알고리즘은 배열에 모든 건물의 층수를 담는다.

그리고 2중 반복문을 이용하여 현재 건물이 볼수있는 개수를 카운트하는게 전부이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(br.readLine());	
		int[] height = new int[num];
		long count=0;
		
		for (int i =0; i< num; i++) {	// 건물의 개수만큼 반복한다.
			height[i] = Integer.parseInt(br.readLine());
		}
		
		for(int i=0; i<num-1; i++) {	//건물의 개수 -1만큼 반복 (마지막 건물은 어짜피 아무것도 보지 못하기때문에 돌릴 필요 없음)
			for(int j=i+1;j<num;j++) {	//현재 건물이 볼 수 있는 건물만 반복 
				if(height[i]> height[j]) {	//현재 건물이 보는게 가능하면 실행
					count++;	// 카운트 증가
				}else {	//현재 건물보다 높거나 같아서 못보면 실행
					break;	//더이상 진행할 필요없음 
				}
			}
			
		}
		
		System.out.println(count);
	}
}