사용 언어 - Python3
문제 - 3020번 개똥벌레 (골드 5)
정답
이모스법, prefix 누적합 문제 (정답 맞춘 여부 O)
1. 이모스법
https://imoz.jp/algorithms/imos_method.html
막대의 시작 = +1
막대의 끝 = -1
prefix 누적합 구하면 겹치는 수 구할 수 있다.
2. 석순과 종유석
range(0,n) for문을 반복하면서
짝수라면 = 석순 = 왼쪽에 붙어있음 = 시작은 항상 0 line[0] += 1 끝은 길이에 따라 line[석순길이] -= 1
홀수라면 = 종유석 = 오른쪽에 붙어있음 = 시작은 전체에서 종유석 길이 뺀 곳에서 line[전체길이-종유석길이] += 1
3. prefix
누적합을 구하고 맨 앞의 0은 무시해준다.
4. output
min(prefix)인 개수를 출력한다.
prefix.count(min(prefix))
import sys
input = sys.stdin.readline
n, h = map(int,input().split())
line = [0 for _ in range(h)]
for i in range(0,n):
height = int(input())
# 시작1, 끝 -1
if i % 2 == 0:
line[0] += 1
line[height] -= 1
else:
line[h-height] += 1
prefix = [0 for _ in range(h+1)]
for i in range(h):
prefix[i+1] = prefix[i] + line[i]
prefix = prefix[1:]
print(min(prefix), prefix.count(min(prefix)))
레퍼런스
'Algorithm > 구현' 카테고리의 다른 글
[백준] 22988번 재활용 캠페인 (투포인터 문제) (1) | 2023.11.03 |
---|---|
[백준] 3273번 두 수의 합 (투포인터 문제) (0) | 2023.11.02 |
[백준] 11600번 구간 합 구하기 5 (0) | 2023.10.24 |
[백준] 2304번 창고 다각형 (1) | 2023.10.23 |
[백준] 1912번 연속합 (0) | 2023.10.23 |
댓글