바버라 베넷의 와일드 넘버

면접 대비

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

요약
숫자와 물음표로 이루어진 와일드 넘버 W와 같은 길이의 수 X가 주어질 때, W에 맞으면서 X보다 큰 길이 n의 숫자 문자열 개수를 센다.
난이도

보통10점 중 4점

유형
조합론, 수학, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

와일드 넘버(wild number)는 숫자와 물음표로 이루어진 문자열이다. 예를 들어 36?1?8이 있다. 길이가 같은 수 XX와 와일드 넘버 WW에 대해, WW에서 물음표가 아닌 모든 문자가 XX의 같은 위치 문자와 일치하면 XX가 WW와 매치된다고 한다(물음표는 임의의 한 자리 숫자로 바꿀 수 있다). 예를 들어 365198은 와일드 넘버 36?1?8과 매치되지만, 360199, 361028, 36128은 매치되지 않는다. 길이가 모두 nn인 와일드 넘버 WW와 수 XX가 주어질 때, WW와 매치되면서 같은 길이의 수로 비교했을 때 XX보다 큰 길이 nn짜리 문자열의 개수를 구하는 프로그램을 작성하시오. 앞자리 0도 허용된다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 길이가 같은 두 줄로 구성되며, 첫 번째 줄에는 와일드 넘버 WW가, 두 번째 줄에는 수 XX가 주어진다. 각 줄의 길이는 11 이상 1010 이하이다. 입력의 마지막 줄에는 문자 # 하나만 주어진다.

출력

각 테스트 케이스마다 WW와 매치되면서 XX보다 큰 길이 nn짜리 수의 개수를 한 줄에 하나씩 출력한다. 여기서 nn은 WW와 XX의 공통 길이이다.

예제2

  1. 예제 1

    입력
    36?1?8
    236428
    8?3
    910
    ?
    5
    #
    
    예상 출력
    100
    0
    4
    
  2. 예제 2

    입력
    5
    4
    #
    
    예상 출력
    1