만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

개와 고양이

면접 대비

메모리 제한1024 MB

요약
줄 순서대로 동물에게 먹이를 주면서 개가 먹을 때마다 고양이 사료 M개를 추가하고, 고양이 사료가 바닥나기 전에 모든 개가 먹이를 받는지 판정한다.
난이도

보통10점 중 4점

유형
시뮬레이션, 구현, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

당신은 동물 보호소에서 동물들에게 먹이를 주는 일을 맡고 있다. 이미 개밥 DD인분과 고양이밥 CC인분을 준비해 두었다.

줄을 서서 기다리는 동물은 모두 NN마리이며, 그중에는 개도 있고 고양이도 있다. 줄에 있는 동물이 전부 개이거나 전부 고양이일 수도 있다. C와 D로 이루어진 길이 NN의 문자열 SS가 줄에 있는 고양이와 개의 순서를 나타낸다. 줄에서 ii번째 동물이 고양이면 ii번째 문자가 C이고, 개이면 ii번째 문자가 D이다.

동물들은 줄을 선 순서대로 먹이를 받는다. 개는 개밥을 정확히 11인분, 고양이는 고양이밥을 정확히 11인분 먹는다. 고양이밥은 여분도 있다. 개가 먹이를 먹을 때마다 고양이를 위해 고양이밥 MM인분을 추가로 가져온다.

동물들은 줄을 선 순서대로 먹이를 받아야 하고, 자기 앞의 동물이 이미 먹이를 먹어야만 먹이를 먹을 수 있다. 개밥이나 고양이밥이 떨어졌는데 개나 고양이가 먹이를 받으려 한다면 줄은 움직이지 않고, 모든 동물이 참을성 있게 기다린다.

이 상황에서 줄에 있는 개가 모두 먹이를 먹을 수 있는지 판별해야 한다. 고양이 몇 마리가 줄에 남을 수도 있지만, 그 고양이들은 나중에 먹이를 받게 되니 걱정할 필요는 없다.

입력

첫 번째 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 네 정수 NN, DD, CC, MM이 주어진다. 각각 동물의 수, 처음 준비한 개밥 인분 수, 처음 준비한 고양이밥 인분 수, 개가 개밥을 먹은 뒤 추가로 가져오는 고양이밥 인분 수이다.

다음 줄에는 동물의 배치를 나타내는 길이 NN의 문자열 SS가 주어진다.

출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력한다. xx는 테스트 케이스 번호( 11부터 시작)이고, yy는 개가 모두 먹이를 먹을 수 있으면 YES, 아니면 NO이다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 1≤N≤1041 \le N \le 10^4.
  • 0≤D,C≤1060 \le D, C \le 10^6.
  • SS는 C와 D로만 이루어진다.

예제2

  1. 예제 1

    입력
    3
    6 10 4 0
    CCDCDD
    4 1 2 0
    CCCC
    4 2 1 0
    DCCD
    
    예상 출력
    Case #1: YES
    Case #2: YES
    Case #3: NO
    
  2. 예제 2

    입력
    2
    12 4 2 2
    CDCCCDCCDCDC
    8 2 1 3
    DCCCCCDC
    
    예상 출력
    Case #1: YES
    Case #2: NO