코딩문제풀이/Baekjoon

[Java] 백준 1027번 : 고층 건물

코딩하는 포메라니안 2022. 7. 13. 13:28

1. 문제

https://www.acmicpc.net/problem/1027

 

1027번: 고층 건물

세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)

www.acmicpc.net

 

 

 

2. 풀이 과정

1. 자신의 오른쪽만 보면서 업데이트한다.

2. 기울기가 증가하는 지점만 count한다.

 

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

public class Boj1027 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int arr[] = new int[N];
		int result[] = new int[N];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i=0; i<N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
        
		int max = 0;
		for(int i=0, iMax=N-1; i<iMax; i++) {
			//기울기
			double d = -1000000001;
			for(int j=i+1; j<N; j++) {
				double now = (double)(arr[j]-arr[i])/(j-i);
				if(d < now) {
					result[i]++;
					result[j]++;
					d = now;
				}
			}
			max = Math.max(max, result[i]);
		}
        max = Math.max(max, result[N-1]);
		System.out.print(max);
	}
}