본문 바로가기

백준

백준1333 - 부재중전화

https://www.acmicpc.net/problem/1333

 

1333번: 부재중 전화

첫째 줄에 N, L, D가 공백을 사이에 두고 주어진다. 모든 수는 1,000보다 작거나 같은 자연수이다.

www.acmicpc.net

노래가 재생되는 도중에 전화가 울린다. 노래와 노래 사이에 간격은 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