[SWEA] 1928. Base64 Decoder

Loopy·2023년 11월 12일
0

코테 문제들

목록 보기
5/113

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.Base64;

public class Solution {
	public static void main(String[] args) throws Exception {
		//System.setIn(new FileInputStream("./sw1928/input1928.txt"));

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T = Integer.parseInt(br.readLine());
		for (int test_case = 1; test_case <= T; test_case++) {
			String str = br.readLine();
			String result = new String(Base64.getDecoder().decode(str));
			System.out.println("#" + test_case + " " + result);

		}
	}
}

✅ 키워드

자바에는 인코딩/디코딩 시에 사용할 수 있는 라이브러리가 있다.
java.util.Base64이다.

Base64란, 64문자의 영숫자를 이용하여 멀티 바이트 문자열이나 이진 데이터를 다루기 위한 인코딩 방식이다.

위 코드에서 Base64.getDecoder().decode(str)이란,
입력받은 str을 디코딩한 문자열을 가져와서 result에 저장한다는 뜻이다.

만약 이 라이브러리를 사용하지 않고 구현한다면 꽤 복잡한 과정일텐데,

1. 표를 보고 입력받은 문자들을 각각 대응하는 숫자들로 변환한다.
2. 각 숫자들을 6자리 이진수로 표현하고, 이 이진수들을 일렬로 나열한다.
3. 일렬로 나열한 이진수들을 8자리씩 끊는다.
4. 8자리씩 끊은 수 각각들을 십진수로 변환한다.
5. 각 십진수들을 아스키코드로 변환한다.
profile
잔망루피의 알쓸코딩

0개의 댓글