https://www.acmicpc.net/problem/1333
노래가 재생되는 도중에 전화가 울린다. 노래와 노래 사이에 간격은 5초가 존재한다. 전화벨 소리는 노래와 노래사이의 간격에서 혹은 모든 노래가 재생이 완료된 후 들을 수 있다. 노래가 재생되는 간격과 벨소리가 재생되는 간격을 수식으로 표현한 후 풀면 쉽게 풀 수 있다.
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> music; //노래가 재생되는 과정을 벡터로 표현
int N, L, D; //N은 앨범의 수록된 노래 수, L은 노래의 간격, D는 벨소리 간격
int bell = 0; //벨소리는 0초에서 시작
cin >> N >> L >> D;
for (int i = 0; i < N; i++) {
for (int j = 0; j < L; j++) { //노래가 재생되는 동안은
music.push_back(1); //1을 벡터에 삽입
}
for (int j = 0; j < 5; j++) { //노래가 재생되지 않는 동안은
music.push_back(0); //0을 벡터에 삽입
}
}
while (1) {
if (bell > music.size()) { //노래가 끝난 후 벨소리가 재생되면
break; //탈출
}
if (music[bell] == 0) { //노래사이의 간격에 벨소리가 울리면
break; //탈출
}
else { //벨소리는 D초 간격으로 울린다. 벨소리가 울리는 간격은 1초
bell = bell + D;
}
}
cout << bell;
}
'백준' 카테고리의 다른 글
백준1966 - 프린터 큐 (0) | 2019.07.06 |
---|---|
백준1057 - 토너먼트 (0) | 2019.07.04 |
백준1613 - 역사 (0) | 2019.06.29 |
백준1021 - 회전하는 큐 (0) | 2019.06.29 |
백준1238 - 파티 (0) | 2019.06.26 |