코딩테스트

정올 폭탄 돌리기 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;
}