본문 바로가기

Python(알고리즘,문제풀이)/BOJ(Bronze II)

**백준 / 1333번 / 부재중 전화 / Python / 구현,시뮬레이션**

728x90

📚문제

출처 : 백준 1333번(https://www.acmicpc.net/problem/1333)


📝풀이

# 1333번 부재중 전화(Bronze II)
n,l,d = map(int,input().split())
song = [False] * ((n*l)+(n-1)*5) # 앨범 총 길이
len(song)
for i in range(0,len(song),l+5): # 노래 시작시간 
    for j in range(i,i+l): # 노래가 시작되고 재생되는 시간
        song[j] = True

for k in range(0,len(song),d):
    if song[k]==False:
        print(k)
        break
else: print(k+d)

 

단순하게 대입해서 풀어나가다보면

풀 수 있을 줄 알았는데 생각보다 까다롭다

 

보통 풀이들이 노래의 총길이를 배열로 저장하는 방법을 사용해서

배열 풀이들 중 가장 잘 설명되어있는 풀이를 참고 하였다

참고링크 출처 : https://velog.io/@vkdldjvkdnj/boj01333

 

풀이✏️

노래 길이만큼

배열을 생성하고 노래가 재생되는 시간은 True로 할당 

노래가 재생되지 않는 시간은 False

그 다음 배열에서 벨소리에 해당하는 인덱스가 False(노래가 재생되지 않는경우) 일 경우

그때의 인덱스 출력

 

만약 노래가 모두 끝날때까지

벨소리가 노래 재생시간에만 나온다면

 

앨범 길이에서 가장 마지막에 울렸던 벨소리 시간 d에

d값을 한 번더 추가해서 출력

 

 

 

 

+ 브론즈 문제치고 너무 어려웠던 것 같다.. 다음에 다시 비슷한 문제를 풀게되거나

같은 문제를 다시 푼다해도 풀이 방법을 생각해낼 수 있을 지 의문이다🧐

체크해놓고 다음에 다시 풀어봐야겠 

728x90