About CryptKicker2 ¶
í…스트를 암호화하는 방법 ì¤‘ì— ë³´ì•ˆìƒ ì·¨ì•½í•˜ê¸´ 하지만 í”하게 ì“°ì´ëŠ” 방법으로 알파벳 글ìžë¥¼ 다른 글ìžë¡œ 바꾸는 ë°©ë²•ì´ ìžˆë‹¤. 즉 ì•ŒíŒŒë²³ì˜ ê° ê¸€ìžê°€ 다른 글ìžë¡œ 치환ëœë‹¤. ì•”í˜¸í™”ëœ ê²ƒì„ ë‹¤ì‹œ ì›ëž˜ëŒ€ë¡œ ë˜ëŒë¦´ 수 ìžˆìœ¼ë ¤ë©´ ë‘ ê°œì˜ ì„œë¡œ 다른 글ìžê°€ ê°™ì€ ê¸€ìžë¡œ 치환ë˜ì§€ 않아야 한다.
ì•Œë ¤ì§„ í‰ë¬¸ 공격법(known plain text attack)ì´ë¼ëŠ” ê°•ë ¥í•œ 암호 ë¶„ì„ ë°©ë²•ì´ ìžˆë‹¤. ì•Œë ¤ì§„ í‰ë¬¸ ê³µê²©ë²•ì€ ìƒëŒ€ë°©ì´ 암호화했다는 ê²ƒì„ ì•Œê³ ìžˆëŠ” 구문ì´ë‚˜ ë¬¸ìž¥ì„ ë°”íƒ•ìœ¼ë¡œ ì•”í˜¸í™”ëœ í…스트를 관찰해서 ì¸ì½”딩 ë°©ë²•ì„ ìœ ì¶”í•˜ëŠ” 방법ì´ë‹¤.
여러 ì¤„ì˜ í…스트가 ì£¼ì–´ì¡Œì„ ë•Œ ê°™ì€ ì¼€ì´ìФì—서는 ëª¨ë“ ì¤„ì—서 ê°™ì€ ì¹˜í™˜ ë°©ë²•ì„ ì‚¬ìš©í•œë‹¤ê³ ê°€ì •í•˜ê³ ê·¸ 중 한 ì¤„ì€ the quick brown fox jumps over the lazy dogë¼ëŠ” í‰ë¬¸ì„ 암호화한 것ì´ë¼ëŠ” ì ì„ ì´ìš©í•´ì„œ ì•”í˜¸í™”ëœ í…스트를 복호화하ë¼.
Input ¶
첫번째 줄ì—는 ì–‘ì˜ ì •ìˆ˜ 하나만 들어있는ë°, ì´ ì •ìˆ˜ëŠ” 테스트 ì¼€ì´ìŠ¤ì˜ ê°œìˆ˜ë¥¼ 나타낸다. ê·¸ ë‹¤ìŒ ì¤„ì€ ë¹ˆ 줄ì´ë‹¤. 서로 다른 테스트 ì¼€ì´ìŠ¤ëŠ” 빈 줄로 구분ëœë‹¤.
ê° ì¼€ì´ìŠ¤ëŠ” 여러 줄로 구성ë˜ëŠ”ë°, 앞ì—서 설명한 ë°©ë²•ì— ë”°ë¼ ì•”í˜¸í™”ëœ í…스트다. ì•”í˜¸í™”ëœ ë‚´ìš©ì€ ì†Œë¬¸ìžì™€ 스페ì´ìŠ¤ë§Œìœ¼ë¡œ 구성ë˜ë©° 길ì´ëŠ” 최대 80문ìžë¡œ ì œí•œëœë‹¤. ìž…ë ¥ë˜ëŠ” í…스트는 100줄로 ì œí•œëœë‹¤.
Output ¶
ê° í…ŒìŠ¤íŠ¸ ì¼€ì´ìŠ¤ì— ëŒ€í•´ ê° ì¤„ì„ ë³µí˜¸í™”í•˜ì—¬ 표준 ì¶œë ¥ìœ¼ë¡œ ì¶œë ¥í•œë‹¤. 가능한 암호화 ë°©ë²•ì´ ë‘ ê°œ ì´ìƒìžˆìœ¼ë©´ ê·¸ 중 아무 결과나 ì¶œë ¥í•´ë„ ëœë‹¤. ë³µí˜¸í™”í• ìˆ˜ 없는 경우ì—는 다ìŒê³¼ ê°™ì€ ê²°ê³¼ë¥¼ ì¶œë ¥í•œë‹¤.
~cpp No solution.서로 다른 ì¼€ì´ìФ 사ì´ì—는 빈 ì¤„ì„ í•œ ê°œ 집어넣는다.
Sample Input ¶
~cpp 1 vtz ud xnm xugm itr pyy jttk gmv xt otgm xt xnm puk ti xnm fprxq xnm ceuob lrtzv ita hegfd tsmr xnm ypwq ktj frtjrpgguvj otvxmdxd prm iev prmvx xnmq
Sample Output ¶
~cpp now is the time for all good men to come to the aid of the party the quick brown fox jumps over the lazy dog programming contests are fun arent they
í’€ì´ ¶
ìž‘ì„±ìž | 사용언어 | 개발시간 | 코드 |
문보창 | C++ | 3시간 | CryptKicker2/문보창 |