https://www.acmicpc.net/problem/3020
import sys
input = sys.stdin.readline
N, H = map(int, input().split(" "))
li = [0]*H
# 석순이면 0~num-1 높이까지 -> li[0] +1 / li[num] -1
# 종유석이면 H-num~H 높이까지 -> li[H-num] +1
for i in range(N):
num = int(input())
# 석순
if i%2 == 0:
li[0] += 1
li[num] -= 1
# 종유석
else:
li[H-num] += 1
# 누적합 구하기
# 각 높이에 해당하는 장애물의 개수 구하기
for i in range(1, H):
li[i] += li[i-1]
# 최소 장애물 개수
min_num = min(li)
#최소 장애물 개수에 따른 높이의 개수 구하기
dap = 0
for i in range(H):
if li[i] == min_num:
dap += 1
print(min_num, dap)'코딩테스트 > 코딩테스트 문제풀이' 카테고리의 다른 글
| [Python] 백준 <2589-보물섬> (0) | 2025.07.07 |
|---|---|
| [Python] 백준 <11052-카드 구매하기> (0) | 2025.07.02 |
| [Python] 백준 <11497-통나무 건너뛰기> (0) | 2025.06.26 |
| [Python] 백준 <7576-토마토> (0) | 2025.06.26 |
| [Python] 백준 <14502-연구소> (0) | 2025.06.25 |