๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 11656๋ฒ ROT13 ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
์ด๋ฒ ๋ฌธ์ ๋ ๋ฌธ์์ด ์ฒ๋ฆฌ ๋ฌธ์ ์ค ์ฌ๋ฐ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์ฐ์ ๋ฌธ์ ๋ถ์๋ถํฐ ํด๋ณด์.
ROT13์ ์นด์ด์ฌ๋ฅด ์ํธ์ ์ผ์ข
์ด๋ผ๊ณ ํ๋๋ฐ, ํต์ฌ์ 13๊ธ์ ์์ผ๋ก shiftํ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ์์๋ 4๊ฐ์ง ๋ฌธ์๊ฐ ๋ค์ด์ฌ ์ ์๋๋ฐ,
- ๋๋ฌธ์ ์ํ๋ฒณ
- ์๋ฌธ์ ์ํ๋ฒณ
- ์ซ์
- ๊ณต๋ฐฑ
์ํ๋ฒณ๋ง shiftํด์ผ ํ๋ค.
์ ๊ทผ๋ฒ
์กฐ๊ธ ๋ ์๊ฐํด๋ณด๋ฉด ์ค์ ๋ก shift ์ฐ์ฐ์ ์ํํ์ง ์๊ณ ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ๋ค.
์ํ๋ฒณ ์ธ๋ฑ์ค์ + 13์ ๋ ๋ฒ ํ๋ฉด ๋ค์ ์๋์ ๋ฌธ์๋ก ๋์์ค๋ ํน์ฑ์ ๊ฐ์ง๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด์.
์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ๊ฒ์ด๋ค.
- ๋ฌธ์์ ์์คํค ์ฝ๋๋ฅผ ์ํ๋ฒณ ์ธ๋ฑ์ค๋ก ๋ณํ
- ROT13 ์ฐ์ฐ์ ์ํ
- ๋ชจ๋๋ฌ 26์ ํตํด ์ํ๋ฒณ ์ธ๋ฑ์ค ๋ฒ์ ์กฐ์
- ์ํ๋ฒณ ์ธ๋ฑ์ค๋ฅผ ์์คํค ์ฝ๋๋ก ๋ณํ
์ด ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ์กฐ๊ฑด์ ์ฌ๋ฌ๋ฒ ๋๋์ง ์์๋ ํ ์ ์๋ค.
์ ๋ต ์ฝ๋
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
char[] chars = br.readLine().toCharArray();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < chars.length; i++) {
char word = chars[i];
if(65 <= word && word <= 90) {
// ๋๋ฌธ์
int wordIndex = (word - 'A') + 13;
wordIndex %= 26;
wordIndex += 'A';
sb.append(Character.toString((char) wordIndex));
}else if(97 <= word && word <= 122) {
// ์๋ฌธ์
int wordIndex = (word - 'a') + 13;
wordIndex %= 26;
wordIndex += 'a';
sb.append(Character.toString((char) wordIndex));
}else {
sb.append(word);
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
๋๊ธ