ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 정올 폭탄 돌리기 c++
    코딩테스트 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;
    }

    '코딩테스트' 카테고리의 다른 글

    백준 싸이클 c++  (1) 2024.02.08
    정올 숫자근 c++  (0) 2024.02.08
    특정 수 제외하기(9진법)  (0) 2024.01.23
    프로그래머스 숫자의 표현(자바)  (2) 2023.06.07
    백준 14719번 빗물(자바) - 스택  (0) 2023.05.29
Designed by Tistory.