RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00945

열쇠말로 만드는 치환표

Bronze I 브론즈 I
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

치환표 \(26\)글자를 통째로 외우기는 어렵다. 그래서 옛날 첩보원들은 열쇠말로 치환표를 만들었다. 방법은 다음과 같다.

  1. 열쇠말에서 중복된 글자를 지운다. 각 글자는 처음 나온 자리만 남긴다. (banana → ban)
  2. 그 뒤에, 아직 쓰이지 않은 알파벳을 a부터 z까지 순서대로 이어 붙여 길이 \(26\)의 치환표를 완성한다.
  3. 평문의 \(i\)번째 알파벳 글자가 아니라, 알파벳에서 \(i\)번째인 글자(a는 \(1\)번째)는 치환표의 \(i\)번째 글자로 바뀐다. 공백은 그대로 둔다.

열쇠말과 평문이 주어지면 암호문을 출력하여라.

제약

열쇠말의 길이는 \(1\) 이상 \(30\) 이하이고, 평문의 길이는 \(1\) 이상 \(1\,000\) 이하이다.

입력 형식

첫째 줄에 영어 소문자로 이루어진 열쇠말이 주어진다.

둘째 줄에 영어 소문자와 공백으로 이루어진 평문이 주어진다. 평문은 공백으로 시작하거나 끝나지 않는다.

출력 형식

평문을 치환표로 암호화한 결과를 출력한다.

예제 1
입력
crane
aced
출력
caen
설명

치환표는 crane + 나머지 알파벳 = cranebdfghijklmopqstuvwxyz이다. a→c, c→a, e→n, d→e이므로 답은 cane이다.

예제 2
입력
banana
ab
출력
ba
설명

중복을 지운 열쇠말은 ban이므로 치환표는 ban + cdefg…로 시작한다. a→b, b→a라서 답은 ba이다.

힌트

막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

열쇠말로 만드는 치환표

개요
출제자 난이도 Bronze I 브론즈 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

열쇠말로 만드는 치환표

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8