전화번호
시간 제한2초메모리 제한512 MB
국가 코드와 사업자 코드 목록이 주어질 때, 11자리 전화번호를 국가 코드, 사업자 코드, 가입자 번호로 나눠 정해진 형식으로 출력하고 불가능하면 Incorrect를 출력한다.
문제
휴대전화 소프트웨어에서 빠질 수 없는 부분이 바로 전화번호부다. 초기 휴대전화에서는 가입자의 이름과 전화번호만 저장할 수 있었다. 더 현대적인 모델에서는 전자 우편 주소, 사진, 소셜 네트워크 페이지 링크, 생년월일 등 여러 가지 유용한 정보도 저장할 수 있다. 하지만 전화번호만 다루는 가장 단순한 버전의 프로그램을 구현할 때에도 개발자들은 몇 가지 어려움에 부딪히곤 한다.
모든 전화번호는 11자리 숫자로 이루어지며, 각각 앞에 0이 없는 수인 세 부분으로 나뉜다고 하자. 첫 번째 부분은 한 자리, 두 자리 또는 세 자리 숫자로 이루어지며 이 전화번호가 등록된 국가의 국가 코드다. 두 번째 부분은 세 자리, 네 자리 또는 다섯 자리 숫자로 이루어질 수 있으며, 번호가 등록된 지역의 지역 코드이거나 이 번호를 소유한 이동통신 사업자의 사업자 코드일 수 있다. 세 번째 부분은 번호의 나머지 모든 숫자로 이루어지며 특정 가입자의 번호다.
휴대전화 화면에 전화번호를 표시할 때에는 번호를 더 쉽게 읽고 기억할 수 있도록 각 부분을 여러 기호로 구분하는 것이 일반적이다. 국가 코드 앞에는 보통 <<+>> 기호를 붙이고, 지역 코드나 사업자 코드는 괄호로 묶으며, 가입자 번호는 <<->> 기호로 여러 부분으로 나눈다. 이때 몇 부분으로 나뉘는지는 가입자 번호의 자릿수에 따라 결정된다.
- 가입자 번호가 세 자리면, 세 자리로 이루어진 한 부분이다.
- 가입자 번호가 네 자리면, 각각 두 자리인 두 부분으로 나뉜다.
- 가입자 번호가 다섯 자리면, 첫 부분이 세 자리이고 두 번째 부분이 두 자리인 두 부분으로 나뉜다.
- 가입자 번호가 여섯 자리면, 각각 두 자리인 세 부분으로 나뉜다.
- 가입자 번호가 일곱 자리면, 첫 부분이 세 자리이고 나머지 부분이 모두 두 자리인 세 부분으로 나뉜다.
당연히도 휴대전화의 전화번호부에 새 번호를 입력하는 사람은 이런 규칙을 생각하지 않고 11자리 숫자열로 입력할 뿐이다. 그러나 번호를 화면에 표시하기 전에 휴대전화 소프트웨어는 이 번호의 어느 부분이 국가 코드이고, 어느 부분이 지역 코드나 사업자 코드이며, 어느 부분이 가입자 번호인지 알아내어 위에 설명한 규칙대로 번호를 형식화해야 한다. 이 문제를 풀 수 있도록, 휴대전화의 메모리에는 현재 존재하는 국가 코드와 그 국가에 존재하는 사업자 코드나 지역 코드에 대한 정보가 저장된다. 이 정보를 이용하여 휴대전화의 전화번호부에 저장된 번호를 올바르게 형식화하는 프로그램을 작성하라.
입력
첫 번째 줄에는 휴대전화의 메모리에 전화번호 코드 정보가 저장된 국가의 수 ()이 주어진다. 이어서 줄바꿈으로 구분된 개의 국가 설명이 주어진다.
각 국가 설명의 첫 번째 줄에는 이 국가의 전화번호 코드 와 이 국가에 존재하는 사업자 또는 지역의 수 (, )가 주어진다. 이 국가 설명의 다음 개 줄에는 이 국가에 등록된 사업자 또는 지역 코드가 주어지며, 각 코드는 100 이상 99999 이하다.
입력 파일의 다음 줄에는 형식화해야 할 전화번호의 수 ()이 주어진다. 다음 개 줄에는 전화번호 자체가 주어지며, 각 번호는 정확히 11자리 숫자로 이루어진 문자열이다.
주어지는 모든 번호는 국가 코드, 사업자 또는 지역 코드, 가입자 번호로 두 가지 이상의 방식으로 나눌 수 없다고 보장된다.
출력
입력 파일에 주어진 번호를 문제에 설명된 규칙대로 형식화하여 출력하라. 각 번호는 한 줄에 하나씩 출력한다. 번호는 입력 파일에 나열된 순서대로 출력해야 한다.
국가 코드, 사업자 또는 지역 코드, 가입자 번호로 올바르게 나눌 수 없는 번호 대신에는 <<Incorrect>>라는 단어를 출력한다.