- 문제 : https://www.acmicpc.net/problem/11655

 

문제 이해 

- 주어진 문자열에서 알파벳들을 13칸씩 미루어서 새로운 문자열을 만드는 문제다.

- 제약사항으로는 소문자는 소문자로 미루고, 대문자는 대문자로 미뤄야 한다. 

- 알파벳의 order를 가지고 풀면 되지만, 제약사항이 있기 때문에 그 부분에 유의해서 풀어야한다. 

- 처음에는 일일히 조건을 나누어서 풀었지만, 그럴 필요없이 아래처럼 간단하게도 풀 수 있다. 

 

풀이 로직 

- 소문자의 order를 13칸 미룬다음 혹시나 z(소문자 끝)의 범위를 넘어가는 것에 대비해 97을 빼준 뒤 26으로 나눈 나머지를 97에 더한다

- 대문자도 마찬가지로 13칸 미룬다음 Z(대무낮 끝)의 범위를 넘어가는 것에 대비해 65를 빼준 뒤 26으로 나눈 뒤 나머지를 65에 더하면 된다.

- 숫자나 띄어쓰기는 그냥 출력해주면 된다.

정답 풀이 

arr=input()
ans=''
for i in arr:
    if i.islower():
        print(chr(97+(ord(i)+13-97)%26), end='')

    elif i.isupper():
        print(chr(65+(ord(i)+13-65)%26), end='')

    else:
        print(i,end='')

+ Recent posts