본문 바로가기

PKU & UVa problems/Translated problem

UVa 628. Passwords

628 - Passwords

Time limit: 3.000 seconds

여러 서버에 여러개의 계정을 둔 사람은 당연히 여러 가지의 비밀번호를 기억해야 합니다. 그리고 어떤 사람이 비밀번호를 잊어버린 상황을 충분히 상상할 수 있을겁니다. 그/그녀 가 기억하고 있는 것은 오직 단어 x, y 그리고 z 와 두 개의 숫자입니다: 하나는 시작하는 숫자이고 다른 하나는 끝나는 숫자입니다.


당신은 이제 주어진 단어와 규칙을 기반으로 하여 비밀번호의 가능성이 있는 모든 것을 찾아내는 프로그램을 작성해야 합니다. 예를 들어 주어진 3 개의 단어:
x, y, z 와 주어진 규칙이 0#0 라면, 이 규칙은 <숫자><사전식 단어><숫자> 의 형태로 나타나야 합니다.

입력 

첫 번째 줄은 사전에 있는 단어들의 숫자를 나타냅니다(n). 각 단어들은 n 개의 연속적인 줄로 나타냅니다. 그 다음 줄은 규칙의 개수를 나타냅니다(m). 비슷하게, 각 규칙 역시 m 개의 연속적인 줄로 나타냅니다. 각 규칙에는 특수문자 `#' 와 `0' 가 임의로 나오게 됩니다. 특수문자 `#' 는 사전상의 단어를 나타내며 특수문자 `0' 는 숫자를 나타냅니다.

입력할 데이터는 여러 개의 사전식 단어들과 거기에 따른 규칙들을 포함합니다.

출력 

각 경우의 '사전 + 규칙' 에 따라 2개의 하이픈으로 구분되도록 선을 긋고, 그 뒤에 가능성이 있는 모든 비밀번호들을 연속적인 줄 형식으로 나타나도록 출력합니다. 이 때, 규칙이 여러개 있는 경우엔 첫번째 규칙에 대해 분류된 비밀번호들을 전부 나열한 후 두번째 규칙에 대해 분류된 비밀번호들을 전부 나열하는, 규칙의 순서에 따라 정렬시켜야 합니다. 또한 단어과 규칙에 따라 정렬할 때 숫자가 포함된다면, 반드시 오름차순으로 정렬시켜야 합니다.


가정: 사전에 있는 단어의 수는 0 보다 크고 100보단 작거나 같습니다 ( $0 < n \le 100$). 단어의 길이는 0 보다 크고 256 보단 작습니다. 단어들은 `
A'..`Z',`a'..`z',`0'..`9' 과 같은 문자들을 모두 포함할 수 있습니다. 규칙의 개수는 1000 보다 작으며, 규칙은 256 개의 문자보다 짧습니다. 문자 `0' 는 규칙에 있어서 7번 이상 나오지 않지만, 최소한 1번은 나와야만 합니다. 문자 `#' 는 필수적이지 않기 때문에 규칙에 꼭 나와야 할 필요는 없습니다.

입력 예시 

2
root
2super
1
#0
1
admin
1
#0#

출력 예시 

--
root0
root1
root2
root3
root4
root5
root6
root7
root8
root9
2super0
2super1
2super2
2super3
2super4
2super5
2super6
2super7
2super8
2super9
--
admin0admin
admin1admin
admin2admin
admin3admin
admin4admin
admin5admin
admin6admin
admin7admin
admin8admin
admin9admin

 


Miguel A. Revilla
2000-01-10

'PKU & UVa problems > Translated problem' 카테고리의 다른 글

PKU 3074. Sudoku  (2) 2011.04.18
PKU 3364. Black and white painting  (1) 2011.04.05
PKU 3132. Sum of Different Primes  (3) 2011.03.13
PKU 2291. Rotten Ropes  (0) 2011.03.10
PKU 2181. Jumping Cows  (2) 2011.03.02