SAMSUNG/SSAFY 준비 (swea)

[SWEA 1928번] D2 - Base64 Decoder (Python)

sanadoing_ 2023. 10. 30. 12:12
728x90

> 파이썬

 

 

 

 

📖 문제 : D2 - Base64 Decoder (Python)

다음과 같이 Encoding 을 한다.

1. 우선 24비트 버퍼에 위쪽(MSB)부터 한 byte씩 3 byte의 문자를 집어넣는다.

2. 버퍼의 위쪽부터 6비트씩 잘라 그 값을 읽고, 각각의 값을 아래 [표-1] 의 문자로 Encoding 한다.



입력으로 Base64 Encoding 된 String 이 주어졌을 때, 해당 String 을 Decoding 하여, 원문을 출력하는 프로그램을 작성하시오.

[제약사항]
문자열의 길이는 항상 4의 배수로 주어진다.
그리고 문자열의 길이는 100000을 넘지 않는다.

[입력]
입력은 첫 줄에 총 테스트 케이스의 개수 T가 온다.
다음 줄부터 각 테스트 케이스가 주어진다.
테스트 케이스는 Encoding 된 상태로 주어지는 문자열이다.

[출력]
테스트 케이스 t에 대한 결과는 “#t”을 찍고, 한 칸 띄고, 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)

 

 

 

내 코드

T = int(input())
dic = dict()
for i in range(ord('A'), ord('Z')+1):
    dic[chr(i)] = i - 65
for i in range(ord('a'), ord('z')+1):
    dic[chr(i)] = i - 71
for i in range(10):
    dic[str(i)] = 52 + i
dic['+'], dic['/'] = 62, 63

for test_case in range(1, T + 1):
    string = input()
    temp = ""
    for s in string:
        temp += "".join(format(dic[s], 'b').zfill(6))
    result = ""
    for i in range(0, len(temp), 8):
        result += chr(int(temp[i:i+8], 2))

    print(f"#{test_case} {result}")

 

 

 

Point ! ⭐️ 

  • 이 문제는 봤슴다 !! 함수 공부 했어요
  • format(value, 'b') : value를 2진수로 변환 
  • .zfill(6) : 6자리수로 앞에 0으로 채움
  • int(value, 2) : value를 2진수로 

 

 

 

 

 

 

 

 

swea

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

728x90