백준

이런저런 문제들 #11655 ROT13[JAVA]

chaechaepower 2023. 7. 5. 21:52

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

 

11655번: ROT13

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

www.acmicpc.net

 

 

 


 

 

 

 

 

문제 접

 

 

 

 

 

1) char에 +13한 결과, 'z' 또는 'Z'를 넘어가는 경우는 범위를 벗어나는 경우이므로 범위를 벗어나는 만큼 a, A에서 더해주면 된다

 

 

2) 'n' 또는 'N'부터 +13할 경우 범위를 벗어나므로 이 경우 -13을 해준다.

 

 

 

 

 

 

 

 

 

 

코드

 

 

 

 

 

1)

 

 

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 s = br.readLine();

		for (int i = 0; i < s.length(); i++) {

			char c = s.charAt(i);

			if ('a' <= c && c <= 'z') {

				c += 13;

				if (c > 'z') {
					int temp = c - 'z';
					c = (char) (temp - 1 + 'a');
				}

				sb.append(c);

			} else if ('A' <= c && c <= 'Z') {

				c += 13;

				if (c > 'Z') {
					int temp = c - 'Z';
					c = (char) (temp - 1 + 'A');
				}

				sb.append(c);

			} else {

				sb.append(c);
			}
		}

		System.out.println(sb);

	}

}

 

 

 

 

 

 

 

2)

 

 

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 s = br.readLine();

		for (int i = 0; i < s.length(); i++) {

			char c = s.charAt(i);

			if ('a' <= c && c <= 'z') {

				if (c >= 'n') {
					c -= 13;
				} else {
					c += 13;
				}

				sb.append(c);

			} else if ('A' <= c && c <= 'Z') {

				if (c >= 'N') {
					c -= 13;
				} else {
					c += 13;
				}

				sb.append(c);

			} else {

				sb.append(c);
			}
		}

		System.out.println(sb);

	}

}