더 많이 실패하기

공부 91일차-2: 백준 11655번 ROT13 자바 Java 본문

카테고리 없음

공부 91일차-2: 백준 11655번 ROT13 자바 Java

김발자~ 2022. 10. 29. 15:40
반응형

11655 ROT13

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

 

11655번: ROT13

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

www.acmicpc.net

 

 

 

 


백준 11655번 문제 ROT13


문제


 

 

 


과정 생각해보기


 

이것 역시 간단한 문제

문자열을 받고 charAt() 메서드로 한글자 한글자씩 점검

알파벳이라면 13씩 더해주고, 알파벳의 범위를 넘는다면 알파벳의 총 개수인 26을 빼주면 원래 자리를 찾는다

 

소문자와 대문자를 나눠야 하는데, 그 이유는 아스키코드에서 소문자와 대문자 사이에 다른 문자들이 껴 있으므로,

같은 조건으로 주면 대문자들은 모두 소문자의 범위를 벗어나서 모두 26씩 뺄셈되기 때문이다

 

 

 


정답 인정 코드


 

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
28
29
30
31
32
33
34
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        String str = br.readLine();
        
        for(int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if('a' <= ch && ch <= 'z') {    //소문자라면
                ch += 13;    //13을 민다
                if(ch > 'z') {            //알파벳 범위를 넘어간다면
                    ch -= 26;        //26(알파벳 총 개수)를 빼준다 (순환 위함)
                }
            } else if('A' <= ch && ch <= 'Z') {    //대문자라면
                ch += 13;
                if(ch > 'Z') {            //알파벳 범위를 넘어간다면
                    ch -= 26;        //26을 뺴준다
                }
            }
            
            sb.append(ch);
        }
        
        System.out.println(sb);
    }
 
}
 
cs

 

주석에 설명 열심히 달았다

 

 


알고리즘 기초에 있는 문제들인데 난이도가 엄청 들쑥날쑥한 것 같다

반응형
Comments