© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 9517 - 아이 러브 크로아티아

2026-01-08
BOJ
브론즈 III
cpp
원본 문제 보기
구현
시뮬레이션

문제

BOJ 9517 - 아이 러브 크로아티아

크로아티아의 TV 퀴즈쇼 시뮬레이션 문제이다. 방송은 최대 210분 동안 진행되며, 시작 채널 k에서 시작한다. 각 라운드마다 소요 시간 t와 정답 여부 ans(T/F)가 주어진다. 누적 시간이 210분을 넘으면 방송이 종료되고 현재 채널을 출력한다. 정답(T)이면 채널이 1 증가하며, 9채널을 넘으면 1로 돌아온다.

입력

첫 번째 줄에 시작 채널 k와 라운드 수 q가 주어진다. 이후 q줄에 걸쳐 각 라운드의 소요 시간 t와 정답 여부 ans(T 또는 F)가 주어진다.

출력

방송 종료 시점의 채널 번호를 출력한다.

예제

입력출력
3 3 100 T 100 F 100 T3

풀이

라운드마다 시간을 누적하면서 210분 초과 조건과 채널 변경 조건을 시뮬레이션한다.

  1. 시작 채널 k와 라운드 수 q를 입력받는다.
  2. 각 라운드에서 소요 시간 t와 정답 여부 ans를 읽는다.
  3. 누적 시간 time += t가 210 이상이면 현재 채널 k를 출력하고 종료한다.
  4. 정답이 T이면 k를 1 증가시키고, k가 9를 초과하면 1로 순환시킨다.
  5. 모든 라운드가 끝난 후에도 종료되지 않으면... (주어진 조건상 210분 내 종료 보장)

핵심 아이디어: 시간 누적을 먼저 확인하고 채널 변경을 나중에 처리하는 순서가 중요하다. 채널 순환은 k == 9일 때 k = 1로 리셋하는 방식으로 처리한다.

코드

#include <iostream>
 
using namespace std;
 
int main()
{
  int k, q;
  int time = 0;
  cin >> k >> q;
  while (q--)
  {
    int t;
    char ans;
    cin >> t >> ans;
    time += t;
    if (time >= 210)
    {
      cout << k;
      break;
    }
    if (ans == 'T')
    {
      k++;
      if (k == 9)
        k = 1;
    }
  }
}

복잡도

  • 시간: O(Q) — Q개의 라운드를 순차 처리
  • 공간: O(1) — 채널, 시간, 라운드 카운터만 사용