728x90

풀이)

import java.util.Scanner;
import java.io.FileInputStream;
import java.util.Base64;
 

class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
 
        for(int i=1; i<=10; i++){
            String str = sc.next();
            if(str.length()%4!=0){
                return;
            }
            // Base64 디코딩
            byte[] decodedBytes = Base64.getDecoder().decode(str);
 
            // 디코딩된 바이트 배열을 문자열로 변환
            String nstr = new String(decodedBytes);
            System.out.printf("#%d %s \n", i, nstr);
        }
    }
}

일단, Base64가 64진법이라는 것을 알아야 한다! 그리고 64진법에 대한 자바의 라이브러리를 알면 간단한 문제인데, 처음 파악하지 못해서 굉장히 어려웠던 문제였다...ㅠㅠ

 

 

 

 


java에서 Base64를 사용하여 인코딩 및 디코딩을 수행하는 방법은

'java.util.Base64'클래스를 사용하는 방법이다. -> 이 클래스는 java8부터 지원하니까 참조!!

예제로 보자면,

import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        // 문자열을 Base64로 인코딩
        String original = "Hello, World!";
        String encodedString = Base64.getEncoder().encodeToString(original.getBytes());
        System.out.println("Encoded string: " + encodedString);

        // Base64 문자열을 디코딩
        byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
        String decodedString = new String(decodedBytes);
        System.out.println("Decoded string: " + decodedString);
    }
}

위의 코드는 "Hello, World!"라는 문자열을 Base64로 인코딩하고, 다시 디코딩하여 원래 문자열로 복원하는 예제이다.

 

'Base64.getEncoder().encodeToString(original.getBytes())'는 주어진 문자열 original을 Base64로 인코딩하여 문자열 형태로 반환하는 코드이다.

'original.getBytes()'를 호출하여 주어진 문자열 original을 바이트 배열로 변환한다.

'Base64.getEncoder()'를 사용하여 Base64 인코더를 가져와서,

'.encodeToString(original.getBytes())'를 호출하여 바이트 배열을 Base64로 인코딩하고, 그 결과를 문자열로 반환한다.

'Base64.getDecoder().decode(encodedString)'은 Base64로 인코딩된 문자열을 디코딩하여 원래의 바이트 배열을 얻는 코드이다.

'Base64.getDecoder()'를 사용하여 Base64 디코더를 가져와서,

'.decode(encodedString)'를 호출하여 Base64로 인코딩된 문자열 'encodedString'을 디코딩한다.

디코딩된 결과는 바이트 배열로 반환이 된다.


생각보다 복잡하고, 64진수가 메일전송이나, 애플영수증(?)등 은근 쓰이는곳이 많아서 나중에 외워두면 정말 좋은 라이브러리니까 복습하자 꼮!!

728x90