1 분 소요

사용 언어: Python3, Java

문제

ROT13

풀이

나의 풀이

파이썬

S = list(input())
for i in range(len(S)):
    if S[i].islower():
        S[i] = chr(ord('a') + (ord(S[i])+13-ord('a'))%26)
    elif S[i].isupper():
        S[i] = chr(ord('A') + (ord(S[i])+13-ord('A'))%26)

print(''.join(S))
  • 테스트 케이스: 성공
  • 제출 결과: 성공

자바

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
        Pattern pattern = Pattern.compile("[a-zA-Z]");
        String str = in.readLine();
        
        for (int i=0; i<str.length(); i++) {
            Matcher matcher = pattern.matcher(String.valueOf(str.charAt(i)));
            if (matcher.find()) { // 패턴이 매칭한다면
                int n = ((int)(str.charAt(i)) + 13);
                if ((int)(str.charAt(i)) >= (int)'A' && (int)(str.charAt(i)) <= (int)'Z') { // 대문자
                    if (n > (int)'Z') {
                        n -= 26;
                    }
                } else { // 소문자
                    if (n > (int)'z') {
                        n -= 26;
                    }
                }
                out.write(String.valueOf((char)n));
            } else {
                out.write(String.valueOf(str.charAt(i)));
            }
        }
        out.close();
        in.close();
    }
}
  • 테스트 케이스: 성공
  • 제출 결과: 성공

다른 풀이

파이썬

S = list(input())
for i in range(len(S)):
    if S[i].islower():
        S[i] = chr((ord(S[i])+13-ord('a'))%26 + ord('a'))
    elif S[i].isupper():
        S[i] = chr((ord(S[i])+13-ord('A'))%26 + ord('A'))

print(''.join(S))
  • 테스트 케이스: 성공
  • 제출 결과: 성공

자바

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        String str = in.readLine();
        for (char ch: str.toCharArray()) {
            if (ch >= 'A' && ch <= 'Z') {
                ch += 13;
                if (ch>(int)'Z') ch-=26;
            } else if (ch >= 'a' && ch <= 'z') {
                ch += 13;
                if (ch>(int)'z') ch-=26;
            }
            sb.append(ch);
        }
        out.write(sb.toString());
        out.close();
        in.close();
    }
}
  • 테스트 케이스: 성공
  • 제출 결과: 성공


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기