본문 바로가기
Baekjoon/[1] 자료구조

[백준] 11655번 ROT13 JAVA (자바) 풀이

by Poorm 푸름 2023. 8. 16.

문제 11655번

 :  ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다

 

 [입력]


 :  첫째 줄에 문자열 S (알파벳 대문자, 소문자, 공백, 숫자 포함)


 [출력]


 :  첫째 줄에 S를 ROT13으로 암호화한 내용을 출력


 [코드]

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        
        for(int i = 0; i<s.length(); i++){
        char c = s.charAt(i);
            
           if(c>='A'&& c<='Z'){
              c+=13;
              if(c>'Z'){
                c-=26;
              }
           }
         else if(c>='a'&& c<='z'){
              c+=13;
              if(c>'z'){
                 c-=26;
              }
           }
            
        System.out.print(c);
        }
    }
}

 

 [해설]
     

 :  String s = br.readLine();  첫째줄 입력받기
         
 :  char c = s.charAt(i);  하나씩 뜯어보기
            
 :  if(c>='A'&& c<='Z'){  입력이 대문자일 때
         c+=13;                 대문자 문자열에만 13칸 만큼 뒤로 미뤄준다
          if(c>'Z')              단, 알파벳 + 13 했을 때 Z가 넘어간다면 알파벳이 아닌 다른 문자로 인식되므로
               c-=26;            - 26해서 A ~ Z 사이에서만 돌아가게끔 반복해준다
    }                                (알파벳 개수가 26개니까 Z를 넘어가면 다시 A로 가서 돌게끔 - 26 한 것)
             
 :  else if(c>='a'&& c<='z'){  입력이 소문자일 때
          c+=13;                       소문자 문자열에만 13칸 만큼 뒤로 미뤄준다
          if(c>'z'){                     단, 알파벳 + 13 했을 때 z가 넘어간다면 알파벳이 아닌 다른 문자로 인식됨
               c-=26;                   - 26해서 a ~ z 사이에서만 돌아가게끔 반복해준다

    }                                       (알파벳 개수가 26개니까 z를 넘어가면 다시 a로 가서 돌게끔 - 26 한 것)
           
  :  System.out.print(c);  c 출력 (*주의 : for문 안에 넣어야 돌아간다)

                                        대문자랑 소문자만 c를 새롭게 갱신해준 것

                                        숫자나 공백은 입력받은 c 그대로 출력되니까 따로 코드를 짤 필요 없다

                       

 

    

이제 풀어보러 갈께요 :)

 

 

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

 

11655번: ROT13

첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.

www.acmicpc.net

 

 

* 독학으로 익히는 코딩이라 틀린 것이 있을 수 있습니다. 오류가 있다면 댓글을 통해 알려주세요. 감사합니다. *