풀이
큐를 활용한 간단한 문제이다.
3분 30초는 210초이고 210초에서 흐르는 시간을 까든,
0초부터 시작해서 210초를 초과하는 조건을 걸든 210초 시간 제한을 둔다.
1. 8명을 que에 넣고 시작하는 사람의 번호가 첫번째 que.front()에 오게 둔다.
2.
if(사람이 T를 받으면) {
시간을 깎고 다음 사람한테 폭탄을 준다.
}
else{
N이나 P를 받았으면, 시간만 까고 그 사람에게 폭탄을 유지한다.
}
3. 위 조건에서 210초가 지나면 그 당시에 폭탄을 들고 있었던 사람을 출력한다.
(풀이는 내가 짠 코드와 리더님이 짜주신 코드 두 개 동봉합니다.)
소스코드1
int main(){
int n, t, z;
int time_ticking = 0;
cin>> n;
while(n--){
cin>>t>>z;
time_ticking += t;
if(time_ticking >= 210)break;
if(z == 'T'){
q.push(q.front());
q.pop();
continue;
}
else{
continue;
}
}
cout<< q.front();
}
소스코드2
//
// main.cpp
// simulationEX
//
// Created by 이동연 on 2021/01/25.
//
#include <iostream>
#include <queue>
using namespace std;
int main(){
int T, N, K;
cin>>K;
cin>>N;
queue<int>q;
int totalTime = 210;
for(int i = 1 ; i <= 8 ; i++){
q.push(i);
}
while(q.front() != K){
q.push(q.front());
q.pop();
}
while(true){
for(int i = 1 ; i <= N ; i++){
int temp=0;
cin>>temp;
char reaction;
cin>>reaction;
if(reaction == 'T'){
totalTime-=temp;
if(totalTime<=0){
cout<<q.front();
return 0;
}
q.push(q.front());
q.pop();
}
else if(reaction =='N' || reaction=='P'){
totalTime-=temp;
if(totalTime<=0){
cout<<q.front();
return 0;
}
}
}
}
}
'Koala - 2기 > C반' 카테고리의 다른 글
[17266번] 어두운 굴다리 (0) | 2021.02.03 |
---|---|
Unordered_set : 호다닥 찾아버리기(+BOJ 수찾기) (0) | 2021.02.02 |
2949번 나무조각 (0) | 2021.01.25 |
[BOJ] 11060번. 점프 점프 (0) | 2021.01.24 |
[BOJ] 2011번. 암호코드 (0) | 2021.01.24 |