[백준] 6198 옥상 정원 꾸미기 (파이썬 python)

2024. 3. 12. 11:08· Algorithm/BOJ
목차
  1. 문제 링크
  2. 문제 풀이
  3. 전체 코드

 

 

문제 링크

 

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

 

6198번: 옥상 정원 꾸미기

문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으

www.acmicpc.net

 

 

문제 풀이

 

단순히 빌딩 하나씩을 확인하며 더 낮고 오른쪽에 있는 빌딩들을 찾을 수도 있지만 시간 초과의 문제가 발생합니다.

문제의 해결 방안은 반대로 현재 기준의 빌딩이 보여질 수 있는 왼쪽의 높은 빌딩들을 찾아나가는 것입니다.

 

for b in buildings:
  while stack and stack[-1] <= b:
    stack.pop()
  stack.append(b)
  result += len(stack) - 1

 

stack에 0번 빌딩의 높이부터 순차적으로 추가하고,

만약 이미 stack에 들어있는 높이 중 현재 높이보다 작은 것이 있다면 모두 pop을 시켜줍니다.

현재 빌딩이 보여질 수 있는 더 높은 빌딩들을 찾고 있는 것이기 때문입니다.

그리고 남은 빌딩의 수를 result에 더해주는 과정을 모든 빌딩에 대해서 해주면 됩니다.

현재 높이를 기준으로 작은 왼쪽의 빌딩들을 pop하기 때문에,

이전에 pop한 높이보다 작은 빌딩의 경우 원하는 높은 빌딩을 모두 구할 수 없지 않느냐는 생각이 들 수 있지만

삭제된 빌딩들은 이미 대조되었던 높은 빌딩에 가려 그 이후에 있는 빌딩들을 볼 수 없습니다.

 

전체 코드

 

n = int(input())
buildings = []
for i in range(n):
    buildings.append(int(input()))

stack = []
result = 0

for b in buildings:
  while stack and stack[-1] <= b:
    stack.pop()
  stack.append(b)
  result += len(stack) - 1

print(result)
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > BOJ' 카테고리의 다른 글

[백준] 14442 벽 부수고 이동하기 2 (파이썬 python)  (0) 2024.03.13
[백준] 17298 오큰수 (파이썬 python)  (0) 2024.03.12
[백준] 20437 문자열 게임 2 (파이썬 python)  (0) 2024.03.04
[백준] 7576 토마토 (파이썬 python)  (0) 2024.03.02
[백준] 16120 PPAP (파이썬 python)  (0) 2024.03.01
  1. 문제 링크
  2. 문제 풀이
  3. 전체 코드
'Algorithm/BOJ' 카테고리의 다른 글
  • [백준] 14442 벽 부수고 이동하기 2 (파이썬 python)
  • [백준] 17298 오큰수 (파이썬 python)
  • [백준] 20437 문자열 게임 2 (파이썬 python)
  • [백준] 7576 토마토 (파이썬 python)
YOONJELLY
YOONJELLY
YOONJELLY
JELLYJELLY
YOONJELLY
전체
오늘
어제
  • 분류 전체보기 (153)
    • Springboot (2)
    • Android (15)
    • Algorithm (126)
      • 개념 (8)
      • BOJ (91)
      • Programmers (15)
      • SWEA (4)
    • 경험_기록 (1)
    • RIM_TIP (4)
    • Github (2)
    • CS (1)
      • 운영체제 (1)
      • 컴퓨터네트워크 (0)
      • 정보처리기사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 이진탐색
  • softeer
  • 액티비티컴포넌트
  • DFS
  • BOJ
  • 정렬
  • BFS
  • 그리디
  • programmers
  • Android
  • 안드로이드
  • 큐
  • 백준
  • kotlin
  • 프로그래머스
  • 이것이코딩테스트다
  • DP
  • Python
  • SWEA
  • 소프티어
  • 코틀린
  • 스택
  • 문자열
  • 완전탐색
  • 자료구조
  • 알고리즘
  • 파이썬
  • 다이나믹프로그래밍
  • 코딩테스트
  • 딕셔너리

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
YOONJELLY
[백준] 6198 옥상 정원 꾸미기 (파이썬 python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.