https://www.acmicpc.net/problem/1027
1027번: 고층 건물
세준시에는 고층 빌딩이 많다. 세준시의 서민 김지민은 가장 많은 고층 빌딩이 보이는 고층 빌딩을 찾으려고 한다. 빌딩은 총 N개가 있는데, 빌딩은 선분으로 나타낸다. i번째 빌딩 (1부터 시작)
www.acmicpc.net
[난이도] Gold4
[유형] 수학
[풀이]
어떤 건물 i에서 j를 볼 수 있으려면 i+1~j-1 인 어떤 모든 k에 대해
i,j의 기울기가 i,k의 기울기보다 커야한다.
i,j를 볼 수 있다는 것은 j에서도 i를 볼 수 있다는 것이다.
2중 for문으로 모든 i,j 짝에 대해 볼 수 있는지 확인할 수 있다.
#include <cstdio>
int N,a[50],ans,c[50];
double getD(int i,int j){
return (a[j]-a[i])/(double)(j-i);
}
int main(){
scanf("%d",&N);
for(int i=0;i<N;i++) scanf("%d",&a[i]);
for(int i=0;i<N-1;i++){
double cur,d;
for(int j=i+1;j<N;j++){
d = getD(i,j);
if(j-1==i || cur < d){
cur = d;
c[i]++; c[j]++;
}
}
}
for(int i=0;i<N;i++) if(ans < c[i]) ans=c[i];
printf("%d",ans);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold4/1027.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 3980 : 선발 명단 (C++) (0) | 2020.12.27 |
---|---|
[BOJ/백준][Gold4] 2151 : 거울 설치 (C++) (0) | 2020.12.24 |
[BOJ/백준][Gold4] 4358 : 생태학 (C++) (0) | 2020.12.24 |
[BOJ/백준][Gold4] 13325 : 이진 트리 (C++) (0) | 2020.12.24 |
[BOJ/백준][Gold4] 16929 : Two dots (C++) (0) | 2020.12.24 |