코딩테스트
정올 폭탄 돌리기 c++
leeeehhjj
2024. 2. 8. 13:50
문제
8명의 사람들이 아래 그림과 같이 원형으로 앉아서 폭탄 돌리기 게임을 한다. 폭탄은 작은 번호의 사람부터 큰번호의 사람으로 이동한다. 맨 처음에는 K번 사람이 폭탄을 갖고 있다.
폭탄을 가진 사람은 퀴즈를 풀게 되는데 퀴즈를 맞힐 때에만 폭탄을 다음 사람에게 넘겨줄 수 있다. 퀴즈를 틀리거나 통과하게 되면 그 사람이 다음 문제를 풀어야 한다.
폭탄은 210초와 211초 사이에 터지게 된다. 이 때 폭탄이 터질 때 폭탄을 갖고 있던 사람을 구하여라.
단, 모든 퀴즈가 다 진행된 후에도 210초가 지나지 않았으면 가장 마지막에 폭탄을 가진 사람에게서 폭탄이 터지게 된다.
입력
첫 번째 줄에는 처음 폭탄을 가진 사람의 번호 K가 주어진다. (1 ≤ K ≤ 8) 두 번째 줄에는 게임이 진행되는 동안 공개된 퀴즈의 수 N이 주어진다. (1 ≤ N ≤ 100) 세 번째 줄부터 N개의 줄에는 퀴즈를 풀거나 통과를 결정할 때까지 걸린 시간 T (1 ≤ T ≤ 100)와 정답 여부 Z가 주어진다. Z가 'T'이면 퀴즈를 맞았다는 것을 의미하고, 'F'이면 틀렸다는 것을, 'P'이면 통과했다는 것을 의미한다.
출력
폭탄이 터질 때 폭탄을 갖고 있던 사람의 번호를 출력한다.
예제1
login입력
1
5
20 T
50 T
80 T
50 T
30 T
logout출력
5
#include <iostream>
using namespace std;
#define MAXN (100)
int K;//처음 폭탄을 가진 사람 번호
int N;//퀴즈 개수
int T[MAXN+10];//걸린 시간
char Z[MAXN+10];//정답 여부
void InputData(){
cin >> K;
cin >> N;
for(int i=0; i<N; i++){
cin >> T[i] >> Z[i];
}
}
int main(){
int ans = -1;
InputData();//입력받는 부분
//여기서부터 작성
int time = 0;
for (int i=0; i<N; i++) {
time += T[i];
if (time > 210) {
ans = K;
break;
}
if (Z[i] == 'T') {
K++;
if (K==9) K=1;
}
}
if(ans == -1) ans = K;
cout << ans << endl;//출력하는 부분
return 0;
}