번지수 숫자 세기

면접 대비

시간 제한1초메모리 제한128 MB

요약
L부터 H까지의 집 번호에 나타나는 숫자 0부터 9의 개수를 세되, 주어진 결번 구간은 제외합니다.
난이도

쉬움10점 중 3점

유형
시뮬레이션, 구현, 수학
정답자
아직 제출이 없습니다

문제

금속 숫자를 만드는 회사가 집 앞에 붙여 번지수를 표시하는 숫자들을 생산한다. 새 거리에 집들이 지어지면, 이 회사는 거리 전체에 필요한 숫자를 한 번에 공급해 달라는 주문을 자주 받는다. 낭비를 막기 위해, 회사는 주문을 채우는 데 각 숫자(0~9)가 몇 개씩 필요한지 정확히 계산할 수 있어야 한다.

건설사는 새 거리에 사용되는 번지수의 범위를 회사에 알려 준다. 때때로 집들 사이에 빈 구간이 있을 수 있는데(예를 들어 학교나 운동장이 있는 경우), 그런 곳의 번호는 필요하지 않다.

입력

입력은 여러 개의 시나리오로 이루어진다. 각 시나리오는 세 정수 LL, HH, GG로 시작한다. 세 값이 모두 00인 줄에서 입력이 끝나며, 그 마지막 줄은 처리하지 않는다.

LL은 거리에서 가장 낮은 번지수, HH는 가장 높은 번지수이다(0<L≤H≤9990 < L \le H \le 999). GG는 고려해야 할 빈 구간의 개수이다(0≤G<200 \le G < 20).

GG가 00이면 회사는 LL부터 HH까지 모든 집(양 끝 포함)의 번호를 공급해야 한다. 그렇지 않으면 같은 줄에서 LL, HH 다음에 GG개의 구간 정보가 이어진다. 각 구간은 두 정수 L1L1, H1H1과 문자 A, E, O 중 하나로 이루어지며, 모두 하나의 공백으로 구분된다. L1L1은 빠진 집 블록의 가장 낮은 번호, H1H1은 가장 높은 번호이다. H1H1이 L1L1과 같으면 집 한 채만 빠졌음을 뜻한다(L≤L1L \le L1, H1≤HH1 \le H). 문자 A는 그 범위의 모든 집이 빠졌음을, E는 짝수 번호의 집만 빠졌음을, O는 홀수 번호의 집만 빠졌음을 뜻한다. 빈 구간끼리는 서로 겹치지 않으므로, 어떤 집도 두 번 이상 제외되지 않는다.

출력

각 시나리오마다 한 줄을 출력한다. 그 줄은 하나의 공백으로 구분된 10개의 정수로 이루어진다. 이 정수들은 주문을 채우는 데 필요한 각 숫자의 개수로, 숫자 00(가장 왼쪽)부터 숫자 99(가장 오른쪽)까지 순서대로 나타낸다. 어떤 숫자가 필요하지 않으면 그 자리에 00을 출력한다.

예제3

  1. 예제 1

    입력
    10 20 0
    1 50 1 12 18 E
    0 0 0
    
    예상 출력
    2 11 2 1 1 1 1 1 1 1
    5 11 14 15 14 6 4 5 4 5
    
  2. 예제 2

    입력
    5 5 0
    0 0 0
    
    예상 출력
    0 0 0 0 0 1 0 0 0 0
    
  3. 예제 3

    입력
    1 10 1 3 7 A
    0 0 0
    
    예상 출력
    1 2 1 0 0 0 0 0 1 1