[java] SWEA - 1928 Base64 Decoder

동훈·2024년 4월 29일




Base64 함수를 처음봐서 정리하는 글 ..

위의 문제와 출력값을 보면 엄청 번거로운 코딩을 해야한다 ..
1. 문자를 입력받고 그 문자에 해당하는 숫자를 반환
2. 반환 받은 숫자를 6자리 이진수를 일렬로 나열
3. 나열한 이진수를 8자리씩 끊음.
4. 8자리씩 십진수로 변환
5. 십진수를 아스키코드로 변환

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

package SWEA_24_04_29;

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

public class D2_1928 {
    public static void main(String[] args) throws IOException {
        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);
        }
    }
}

Base64.getDecoder().decode(str)
입력받은 str을 디코딩한 문자열을 가져와서 result에 저장

package SWEA_24_04_29;

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

public class D2_1928 {
    public static void main(String[] args) throws IOException {
        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.getEncoder().encode(str.getBytes()));
            System.out.println("#" + test_case + " " + result);
        }
    }
}

반대로 인코딩한 문자열을 가져와서 result 로 출력도 가능한걸 확인했다.
디코딩/인코딩 = Base64 기억하자

profile
성실함 한스쿱

0개의 댓글