티스토리 뷰

728x90

https://www.acmicpc.net/problem/4446

 

4446번: ROT13

간달프는 여러 종족의 언어를 꽤 오랜 시간 동안 공부했다. 최근에 간달프는 해커들이 사용하는 언어인 ROT13을 공부했다. 이 언어는 영어와 문법이 같지만, 알파벳의 순서를 어떤 규칙을 이용해

www.acmicpc.net

 

입력 문자가 "여러 줄" 인 점을 고려해야합니다.

try catch문으로 여러 줄을 받게 만들면 나머지는 쉬운 구현문제입니다.

 

           

예시             1 2 3 4 5 6

                     ^      ^

                     end   st      

 

부연 설명 : 길이 6인 배열의 4번 인덱스에서 -3만큼 이동 > 1번 인덱스로 이동

                            4 - 3 = 1

                            (4 + 3) % 6 = 1

           

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
= ['a''i''y''e''o''u']
= ['b''k''x''z''n''h''d''c''w''g''p''v''j''q''t''s''r''l''m''f']
while True:
    try:
        S = input()
        ans = ''
        for i in range(len(S)):
            if 65 <= ord(S[i]) <= 90:
                tmp = S[i].lower()
                if tmp in a:
                    idx = (a.index(tmp) + 3) % len(a)
                    ans += a[idx].upper()
                else:
                    idx = (b.index(tmp) + 10) % len(b)
                    ans += b[idx].upper()
            elif 97 <= ord(S[i]) <= 122:
                if S[i] in a:
                    idx = (a.index(S[i]) + 3) % len(a)
                    ans += a[idx]
                else:
                    idx = (b.index(S[i]) + 10) % len(b)
                    ans += b[idx]
            else:
                ans += S[i]
        print(ans)
    except:
        break
cs

 

 

 

댓글