1990년대 초에 월드 와이드 웹(WWW)이 발명되었습니다. 오늘날 대부분의 사람들은 WWW를 웹 브라우저로 읽는 (예쁘거나 그렇지 않은) HTML 페이지들의 모음 정도로 생각합니다. 하지만 당시 WWW 설계의 주된 의도 중 하나는 이미 존재하던 여러 통신 프로토콜을 하나로 통합하는 것이었습니다.
그 시절에도(그리고 지금도) 인터넷의 정보는 FTP, HTTP, 이메일, 뉴스, Gopher 등 매우 다양한 경로로 제공되었습니다. WWW 덕분에 이 서비스들은 이제 모두 URL(Uniform Resource Locator, 통합 자원 위치 지정자)을 통해 동일한 방식으로 지정할 수 있게 되었습니다. 이 문제에서는 다음과 같은 단순화된 URL 문법을 다룹니다.
<protocol>://<host>[:<port>][/<path>]
대괄호 [ ]로 둘러싸인 부분은 선택 사항이며, 나타날 수도 있고 나타나지 않을 수도 있습니다. URL의 예시는 다음과 같습니다.
http://www.informatik.uni-ulm.de/acm
ftp://acm.baylor.edu:1234/pub/staff/mr-p
gopher://veryold.edu
각 구성 요소의 규칙은 다음과 같습니다.
<protocol>은 항상 http, ftp, gopher 중 하나입니다.<host>는 알파벳(a-z, A-Z), 숫자(0-9), 마침표(.), 붙임표(-), 밑줄(_)로 이루어진 문자열입니다.<port>는 65536보다 작은 양의 정수입니다.<path>는 공백을 포함하지 않는 문자열입니다.주어진 URL을 각 구성 요소로 분해하는 프로그램을 작성하세요.
Gopher는 오늘날 WWW의 조상 격인 서비스로, 지금은 거의 사라졌지만 WWW가 발명될 무렵에는 상당히 중요했습니다.
첫째 줄에 URL의 개수를 나타내는 정수 $n$이 주어집니다. 이어지는 $n$개의 줄에는 위에서 설명한 형식의 URL이 한 줄에 하나씩 주어집니다. 각 URL의 길이는 최대 60자입니다.
각 URL에 대해 먼저 URL #k 형태로 URL 번호를 출력합니다(첫 번째 URL은 URL #1). 이어서 네 줄에 걸쳐 프로토콜, 호스트, 포트, 경로를 각각 Protocol, Host, Port, Path 라벨과 함께 출력합니다. 포트나 경로가 URL에 없으면 그 값 대신 <default>를 출력합니다.
라벨은 왼쪽 정렬로 8칸 폭을 채운 뒤 =로 값과 이어 붙입니다. 연속한 두 URL의 출력 블록 사이에는 빈 줄을 하나 넣어 구분하며, 출력의 맨 끝에는 줄바꿈만 있고 빈 줄을 추가로 넣지 않습니다. 정확한 형식은 아래 예시를 참고하세요.