Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 세마포어
- 운영체제
- 교착상태
- 가상 메모리
- ALU
- 백준
- 단편화
- 페이지 대치
- 스레드
- 스케줄링
- mutex
- 인터럽트
- 알고리즘
- 프로세스
- fork()
- 추상화
- BOJ
- 트랩
- 페이징
- Algorithm
- mips
- 우선순위
- concurrency
- 부동소수점
- 동기화
- 페이지 부재율
- 기아 상태
- 컴퓨터구조
- PYTHON
- Oracle
Archives
- Today
- Total
봉황대 in CS
[BOJ14719 - Python] 빗물 본문
문제
고이는 빗물의 총량 구하기
풀이
1. 가장 왼쪽 블록부터 시작
2. 맨 위쪽 블록부터 맨 아래쪽 블록까지 아래의 수행을 차례대로 진행한다.
2-1. 현재 보고 있는 위치보다 높거나 높이가 같은 블록을 마주쳤을 때, 두 블록 사이에 들어가 있는 공간 개수만큼 고인 물을 저장하는 변수에 더한다.
2-2. 만약 블록을 마주치지 않았다면 두 블록 사이에 고인 물이 없다는 것이므로 더하지 않는다.
3-1. 한 열에 대하여 해당 수행을 완료했을 때, 마주쳤던 블록들 중 가장 멀었던 블록에서 2번을 다시 수행한다.
3-2. 만약 블록을 마주치지 않았다면 바로 다음 열에서 수행한다.
→ 2차원 세계의 끝까지 도달할 때까지 반복한다.
* 코드
import sys
H, W = map(int, sys.stdin.readline().split())
world = list(map(int, sys.stdin.readline().split()))
well = 0 # 고인 물
next_i = 0
for i in range(len(world) - 1):
h = world[i]
if h != 0:
for water_h in range(1, h + 1):
for j in range(i + 1, len(world)):
now_h = world[j]
if now_h >= water_h:
well += j - i - 1
next_i = max(next_i, j)
break
i = next_i
print(well)
반응형
'Problem Solvings > BOJ' 카테고리의 다른 글
[BOJ20055 - Python] 컨베이어 벨트 위의 로봇 (0) | 2022.07.02 |
---|---|
[BOJ20058 - Python] 마법사 상어와 파이어스톰 (0) | 2022.07.01 |
[BOJ5212 - Python] 지구 온난화 (0) | 2022.06.29 |
[BOJ20057 - Python] 마법사 상어와 토네이도 (0) | 2022.06.28 |
[BOJ15685 - Python] 드래곤 커브 (0) | 2022.06.27 |
Comments