문제
https://www.acmicpc.net/problem/27496
Algorithm
누적합을 이용하여 현재 알코올 농도를 구한다. 이때, 알코올이 지속되는 시간을 고려해야한다.
예제 입력 1을 보면 알코올의 지속시간이 3이므로, 첫번째 술은 3시간까지 적용 후 4번째 시간이후부터는 사라지도록 코드를 구성한다.
문제에서 혈중 알코올 농도는 0.001을 곱하여 계산한다고 되어있는데, 이는 부동소수점 문제가 나타난다.
해당 사진은 값을 임의로 넣었을때 prefix배열의 출력이다. 우리가 원하는 소수점 3번째 자리까지의 값이 반영이 안되어 있기 때문에, 0.001을 곱하지 않고 정수 그대로 계산한 후에, 해당 시간의 혈중 알코올 농도가 129 ~ 138 사이에 있는지 확인하는 방식으로 바꾸었다.
Code
input = __import__('sys').stdin.readline
n,l = map(int,input().split())
alc = list(map(int,input().split()))
cnt = 0
prefix = [0]
for i in range(1,n+1):
prefix.append(prefix[i-1]+alc[i-1])
if i > l:
prefix[i] -= alc[i-l-1]
if prefix[i] >= 129 and prefix[i] <= 138:
cnt += 1
print(cnt)
'Koala - 15기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/python] 19637 : IF문 좀 대신 써줘 (0) | 2024.07.27 |
---|---|
[백준/Python] 16401번: 과자 나눠주기 (0) | 2024.07.25 |
[백준/c++] 1874번: 스택 수열 (0) | 2024.07.23 |
[백준/c++] 1021번: 회전하는 큐 (0) | 2024.07.22 |
[백준/Python3] 14465번 : 소가 길을 건너간 이유 5 (0) | 2024.07.21 |