문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

8006 : 문자열 암호화

•시간제한: 2.000 S •메모리제한: 256 MB •제출: 0 •통과: 0 •만든사람: suakii

8006 : 문자열 암호화

시간 2.000s · 메모리 256MB · 제출 0 · 정답 0

문제 설명

특정한 규칙을 기반으로 평문을 암호문으로 변환하는 암호화 프로그램을 작성하십시오.

[암호화 규칙]
1. 알파벳 소문자 모음($V$)은 aeiou의 순서로 무한히 반복됩니다. (aeiouaeiou...)
2. 알파벳 소문자 자음($C$)은 bcdfghjklmnpqrstvwxyz의 순서로 무한히 반복됩니다. (bcdfghjklmnpqrstvwxyz...)
3. 변환하려는 글자 $c$가 입력 문자열 내에서 등장한 누적 횟수를 $k$라고 합니다 ($k \ge 1$).
4. 만약 $c$가 모음인 경우, 무한 모음 문자열에서 $c$의 $k$번째 등장 인덱스를 구한 후, 무한 자음 문자열의 해당 인덱스에 있는 자음으로 대체합니다.
5. 만약 $c$가 자음인 경우, 무한 자음 문자열에서 $c$의 $k$번째 등장 인덱스를 구한 후, 무한 모음 문자열의 해당 인덱스에 있는 모음으로 대체합니다.

[제약 조건]
• $1 \le T \le 100$ (테스트 케이스 수)
• 각 테스트 케이스 문자열의 길이는 $1$ 이상 $50,000$ 이하이며 알파벳 소문자로만 구성됩니다.

입력 설명

첫째 줄에 테스트 케이스의 개수 $T$가 주어집니다.
다음 $T$개의 줄에 걸쳐 암호화할 문자열이 한 줄에 하나씩 주어집니다.

출력 설명

각 테스트 케이스에 대해 암호화된 문자열을 한 줄에 하나씩 출력합니다.

입력 예시
COPY
복사되었습니다!

2
baax
aaa

출력 예시
COPY
복사되었습니다!

abho
bhn

도움

각 문자의 누적 등장 횟수를 해시 맵(딕셔너리)이나 26 크기의 배열로 세어가며 $O(N)$ 시간 복잡도로 빠르게 변환할 수 있습니다.

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘