Java/Java 알고리즘

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

kimc 2021. 12. 16. 22:08

```

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

```

이번 글을 통해 배워갈 내용

  1.  백준 5598번 풀이

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

 

5598번: 카이사르 암호

가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건

www.acmicpc.net

 

 

 

백준 5598번 카이사르 암호는

난이도 브론즈 등급의 문제로서

 

로마시대 카이사르가 비밀스럽게 문자열을 주고받을 때 쓴 방식으로 유명합니다.

3짜리 카이사르 암호 설명 그림

위에 그림처럼 키 만큼 문자열을 옆으로 쉬프트(밀어서) 문자열을 구해주는 방법입니다.

 

카이사르 암호로 주어진 문자열을

평문으로 바꿔주는 문제입니다.

키는 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