```
백준 5598번 카이사르 암호 JAVA 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 5598번 풀이
https://www.acmicpc.net/problem/5598
5598번: 카이사르 암호
가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건
www.acmicpc.net
백준 5598번 카이사르 암호는
난이도 브론즈 등급의 문제로서
로마시대 카이사르가 비밀스럽게 문자열을 주고받을 때 쓴 방식으로 유명합니다.

위에 그림처럼 키 만큼 문자열을 옆으로 쉬프트(밀어서) 문자열을 구해주는 방법입니다.
카이사르 암호로 주어진 문자열을
평문으로 바꿔주는 문제입니다.
키는 3으로 가정합니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
문자 리스트로 입력받고
문자 리스트를 순회하면서
평문으로 문자를 하나씩 바꿔줍니다.
그리고 출력하면 됩니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 암호문 리스트
List<Character> encodedList = br.readLine().codePoints().mapToObj(c -> (char) c).collect(Collectors.toList());
// 평문 리스트
List<Character> decodedList = encodedList.stream().map(Main::findDecodedChar).collect(Collectors.toList());
// 출력
decodedList.forEach(System.out::print);
}
private static char findDecodedChar(Character c) {
int tempVal = Integer.valueOf(c) - 3;
if (tempVal < 'A') {
tempVal = 'Z' + ((tempVal) - 'A' + 1);
}
return (char) tempVal;
}
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
'Java > Java 알고리즘' 카테고리의 다른 글
| 백준 3285번 DECODE JAVA 구현해보기 (0) | 2021.12.26 |
|---|---|
| 백준 1181번 단어정렬 JAVA 구현해보기 (1) | 2021.12.25 |
| 백준 17285번 XORChic JAVA 구현해보기 (0) | 2021.12.16 |
| 백준 17284번 Vending Machine JAVA 구현해보기 (0) | 2021.12.15 |
| 백준 17283번 I am Groot JAVA 구현해보기 (0) | 2021.12.15 |