알고리즘/백준 문제풀이

[Python/BOJ] 백준 1027 고층 건물(구현)

개발자 덕구🐾 2022. 8. 5. 17:02
728x90

 

 

기울기를 사용한다는 건 생각도 못했다. 

 

 

그림으로 그려보았다.

건물의 왼쪽은 건물이 보이기 위해서는 기울기가 작아져야하고

건물의 오른쪽은 건물이 보이기 위해서는 기울기가 커져야한다. 

 

 

이걸 생각만 할 수 있다면 그렇게 어려운 문제는 아니다ㅎㅎ 

 

 

 

코드 : 

# 원점이 (x1,y1)
def slope(x1,y1,x2,y2) : 
    return (y2-y1) / (x2-x1)

# 기울기가 작아져야 볼 수 있다.
def count_left(idx) :
    min_scope = int(1e9)
    cnt= 0
    for i in range(idx-1,-1,-1) :
        s = slope(idx, mp[idx], i, mp[i])
        if min_scope > s :
            min_scope = s 
            cnt+=1 
    return cnt 
    
# 기울기가 커야 볼 수 있다. 
def count_right(idx) :
    max_scope = -int(1e9)
    cnt = 0
    for i in range(idx+1,n) :
        s = slope(idx, mp[idx], i, mp[i])
        if max_scope < s :
            max_scope = s 
            cnt+=1 
    return cnt 
    
    
if __name__=="__main__" :
    n = int(input())
    mp = list(map(int,input().split()))
    
    ans = 0
    for i in range(n) :
        left = count_left(i)
        right = count_right(i)
        ans = max(ans, left+right)
    print(ans)

 

 

참고 블로그 :

https://one10004.tistory.com/229

 

1027. 고층 건물 (Python)

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

one10004.tistory.com

 

 

 

 

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형