모든 계정은 암호(password) 대신에 암호문(passphrase)을 사용한다는 새로운 체계 정책이 적용되었다. 암호문은 띄어쓰기로 구분된 일련의 단어들 (알파벳 소문자)로 구성된다.
보안성을 확립하기 위해, 유효한 암호문은 중복 단어가 없어야 한다.
예시:
aa bb cc dd ee
는 유효하다.aa bb cc dd aa
는 유효하지 않다. -aa
단어가 1번 이상 나타난다.aa bb cc dd aaa
는 유효하다.aa
와aaa
는 다른 단어로 여긴다.
체계의 암호문 목록이 퍼즐 입력으로 주어진다. 유효한 암호문의 개수는?
- 입력 : 암호문들
- 처리 : 파싱된 단어들을 dictionary에 하나씩 넣어보면서 중복이 나타나면 무효를, 중복이 없으면 유효로 개수를 센다.
- 출력 : 중복이 없는 유효한 암호문들의 개수.
- source
추가적인 보안성을 위해, 또다른 체계 정책이 적용되었다. 이제, 서로 철자 바꾸기가 되는 두 개의 단어를 포함하지 않아야 유효한 암호문이다 - 즉, 암호문의 어느 단어의 철자들로 다른 단어를 형성할 수 있다면 무효한 암호문이다.
예시:
abcde fghij
는 유효한 암호문이다.abcde xyz ecdab
는 무효하다 - 3번째 단어의 철자들로 1번째 단어를 생성할 수 있다.a ab abc abd abf abj
는 유효한 암호문인데, 이는 서로 철자 바꾸기가 되지 않는다.iiii oiii ooii oooi oooo
는 유효하다.oiii ioii iioi iiio
는 무효하다 - 모든 단어들이 다른 단어들로 형성될 수 있다.
새로운 체계 정책 하에, 유효한 암호문의 개수는?
- 입력 : 암호문들
- 처리 : 파싱된 단어들을 dictionary에 하나씩 넣어보는데, 단어 안의 철자들은 사전 순으로 정렬이 되어 있어야 하며, 여기서 중복이 나타나면 무효를, 중복이 없으면 유효로 개수를 센다.
- 출력 : 사전 순으로 정렬된 철자로 구성된 단어의 중복이 없는 유효한 암호문들의 개수.
- source