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
728x90
'SAMSUNG > SSAFY 준비 (swea)' 카테고리의 다른 글
[SWEA 1288번] D2 - 새로운 불면증 치료법 (Python) (1) | 2023.10.30 |
---|---|
[SWEA 1959번] D2 - 두 개의 숫자열 (Python) (1) | 2023.10.30 |
[SWEA 1983번] D2 - 조교의 성적 매기기 (Python) (0) | 2023.10.27 |
[SWEA 1984번] D2 - 중간 평균값 구하기 (Python) (0) | 2023.10.27 |
[SWEA 1986번] D2 - 지그재그 숫자 (Python) (0) | 2023.10.27 |