문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PR4DKAG0DFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
문제의 내용을 요약하면 다음과 같다.
<Encoding> 8bit 3글자 -> 6bit 4글자
<Decoding> 6bit 4글자 -> 8bit 3글자
문제에서는 인코딩된 결과값을 주고 다시 디코딩하라고 하였다.
리스트를 이용하여 [표1]을 저장한다. 그리고 입력되는 문자열의 각 글자를 대응하는 값을 6bit씩 연결하고 24bit가 될때마다 8bit 씩 잘라서 아스키코드로 변환한뒤 출력한다.
코드
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Character> list = new ArrayList<>();
for(int i=0;i<26;i++) {
list.add((char) ('A'+i));
}
for(int i=0;i<26;i++) {
list.add((char) ('a'+i));
}
for(int i=0;i<10;i++) {
list.add((char)(i+'0'));
}
list.add('+');
list.add('/');
int T = Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
String str = br.readLine();
String ans = "";
for(int i=0;i<str.length()/4;i++) {
int b = 0;
for(int j=i*4;j<(i*4)+4;j++) {
char ch = str.charAt(j);
b = (b << 6) | (list.indexOf(ch));
}
for(int j=2;j>=0;j--) {
char ch = (char) ((b & (255 << 8*j)) >> 8*j);
ans += ch;
}
}
System.out.println("#"+test_case+" "+ans);
}
}
}
문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PR4DKAG0DFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
문제의 내용을 요약하면 다음과 같다.
<Encoding> 8bit 3글자 -> 6bit 4글자
<Decoding> 6bit 4글자 -> 8bit 3글자
문제에서는 인코딩된 결과값을 주고 다시 디코딩하라고 하였다.
리스트를 이용하여 [표1]을 저장한다. 그리고 입력되는 문자열의 각 글자를 대응하는 값을 6bit씩 연결하고 24bit가 될때마다 8bit 씩 잘라서 아스키코드로 변환한뒤 출력한다.
코드
import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList<Character> list = new ArrayList<>(); for(int i=0;i<26;i++) { list.add((char) ('A'+i)); } for(int i=0;i<26;i++) { list.add((char) ('a'+i)); } for(int i=0;i<10;i++) { list.add((char)(i+'0')); } list.add('+'); list.add('/'); int T = Integer.parseInt(br.readLine()); for(int test_case = 1; test_case <= T; test_case++) { String str = br.readLine(); String ans = ""; for(int i=0;i<str.length()/4;i++) { int b = 0; for(int j=i*4;j<(i*4)+4;j++) { char ch = str.charAt(j); b = (b << 6) | (list.indexOf(ch)); } for(int j=2;j>=0;j--) { char ch = (char) ((b & (255 << 8*j)) >> 8*j); ans += ch; } } System.out.println("#"+test_case+" "+ans); } } }