[SWEA-D2][Base64 Decoder][JAVA]

Boknami·2023년 10월 16일

SWEA

목록 보기
6/14

🕐풀이시간 : 구현을 못했음

📋 문제에 대하여

몇 번이나 문제를 다시 읽어 봤지만 뭘하라는건지 정확하게 파악을 못했다.

#인코딩(Encoding)을 하는 과정
24비트 버퍼에 (3byte버퍼에) 1byte씩 3byte의 문자를 집어넣고
버퍼의 위쪽부터 6비트씩 잘라 읽고 인코딩을 하는..?

읽었을 때 이게 무슨 말인지 바로 파악하기도 어렵고 댓글들도 봤는데 제대로 이해하지 못하는 사람들이 나만 있는 건 아니였다.

아무튼 결론은
1.입력 받은 문자들을 표를 보고 숫자로 변환
2.숫자를 6비트의 이진수로 표현한다.(표가 0~63까지 있으니까 가능)
3.이진수들을 한 줄로 이어붙여 하나의 str
4.str을 8자리씩 끊어서 십진수로 변경
5.각 십진수를 아스키 코드로 변환
인데..

결국 이렇게 인코딩된 str을 디코딩하여 원문으로 다시 표현을 해야한다. 코드로만 풀이하는 것은 여간 쉬운 일이 아니고 찾아보니 여러 풀이들에서 라이브러리를 사용했고, 코테에서 라이브러리 사용 제한에 대한 부분을 찾지 못해서 이렇게 풀이해도 될 것 같다!


📌Base64인코딩-디코딩 라이브러리

String answer = new String(Base64.getDecoder().decode(inputStr));

-> inputStr을 디코딩한 문자열을 get!


💻 코드

import java.io.*;
import java.util.*;

public class Solution {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int T = Integer.parseInt(br.readLine());
        
		for(int t = 1; t <= T; t++) {
			String now = br.readLine();
			String ans = new String(Base64.getDecoder().decode(now));
			
			sb.append('#').append(t).append(' ').append(ans).append("\n");
		}		
		System.out.println(sb);
	}
}

0개의 댓글