티스토리 뷰
https://www.acmicpc.net/problem/6198
6198번: 옥상 정원 꾸미기
문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으
www.acmicpc.net
- 문제에서 같은 높이의 탑은 옥상을 확인할수 있는지 여부가 안나와 있는데, 질문 게시판에 보면 확인할수 없다고 나와있다.
이 문제는 뒤의 빌딩부터 앞으로 탐색해야 하고, 스택에 (빌딩 번호, 높이)를 저장한다.
i번 탑이 확인할수 있는 옥상의 갯수를 저장하는 mark[] 배열도 만든다.
스택의 top의 빌딩의 높이가 탐색중인 빌딩의 높이보다 작으면 계속해서 stack에서 빼주면서 몇개인지 카운팅 해주면 된다.
이때 단순히 스택에서 뺀 갯수가 현재 탐색중인 탑이 확인할수 있는 옥상의 수가 아니라, 스택에서 빼준 탑이 확인할수 있는 옥상의 갯수 즉 mark[] 값도 같이 더해줘야 한다.
왜냐하면 i번탑이 j번 탑보다 높다는 것은 j번 탑은 물론 j번 탑이 확인할수 있는 옥상들도 다 확인할수 있기 때문이다.
그리고 답은 long long 형으로 해줘야 한다.
만약 탑의 높이가 1번 탑이 1000000000, 2번 탑이 999999999 ... 80000번째 탑 까지 주어지면 int형을 벗어나는 것을 알 수 있다.
'PS' 카테고리의 다른 글
백준 16637. 괄호 추가하기 (0) | 2022.12.07 |
---|---|
백준 11000. 강의실 배정 (0) | 2022.12.06 |
백준 14494. 다이나믹이 뭐예요? (0) | 2022.12.02 |
백준 2164. 카드2 (0) | 2022.12.02 |
백준 1062. 가르침 (0) | 2022.12.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- floyd warshall
- 이분탐색
- Unity
- 조합
- graph
- permutation
- binary search
- two pointer
- Dijkstra
- C
- Spring
- MVC
- dfs
- Stack
- 자료구조
- BFS
- Tree
- C++
- Python
- DP
- greedy
- recursion
- back tracking
- Kruskal
- 재귀
- Implementation
- Brute Force
- CSS
- priority queue
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함