문제풀이/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)