문제풀이/BOJ
[Python] BOJ/백준 1333번 부재중 전화
서채리
2021. 7. 8. 21:58
[문제]
https://www.acmicpc.net/problem/1333
1333번: 부재중 전화
첫째 줄에 N, L, D가 공백을 사이에 두고 주어진다. 모든 수는 1,000보다 작거나 같은 자연수이다.
www.acmicpc.net
[풀이]
노래가 재생되고 있는 시간과 전화를 받을 수 있는 시간을 boolean 리스트로 체크한다.
True일 경우 노래가 재생 중이고, False일 경우 전화를 받을 수 있다.
예제 입력의 경우 첫 번째 곡이 나올 때인
s = (노래 길이 5초 + 조용한 구간 5초) * 0 = 0이고 s부터 s+l인 5초. 즉 0~5초는 True로 설정한다.
두 번째 곡은 s = (5 + 5) * 1 = 10이고 10부터 15초를 True로 설정한다.
그 후 0초부터 전화벨이 울리는 d초씩 더해 해당 boolean 리스트 값이 False일 경우 break를 해 answer를 출력한다.
[코드]
if __name__ == '__main__':
n, l, d = map(int, input().split())
check = [False] * (n * l + 5 * (n - 1))
for i in range(n):
s = (l + 5) * i
for j in range(s, s + l):
check[j] = True
answer = 0
while answer < len(check):
if not check[answer]:
break
answer += d
print(answer)