티스토리 뷰
1. 문제 내용
2. 접근 방식
- 입력된 문자열의 각 문자를 [표-1]을 보고 다시 값(숫자)로 변환
- 값을 6자리의 2진수로 변환 ex) 110 → 000110
- 2진수를 모두 연결 후, 8비트씩 끊어 10진수로 변환
- 10진수(아스키 코드)를 문자열로 변환
각 단계는 문제를 보고 유추할 수 있었지만, 10진수(아스키 코드)를 문자열로 변환하는 것은 생각하기 어려웠다. 하지만, 어떤 문자를 2진수로 표현하려면, 먼저 문자를 아스키 코드로 변환한 후 2진수로 표현해야 하므로 마지막 단계를 필요하다.
3. 정답 코드
- ascii_lowercase, ascii_uppercase : 알파벳 소문자/대문자를 담은 리스트
- bin( ) : 10진수 → 2진수
- int(2진수, 2) : 2진수 → 10진수
- chr( ) : ASCII 코드 → 문자열
from string import ascii_lowercase, ascii_uppercase
def make_table() :
table = dict()
num = 0
for alpha in ascii_uppercase + ascii_lowercase:
table[alpha] = num
num += 1
for n in range(10) :
table[str(n)] = num
num += 1
table['+'], table['/'] = num, num + 1
return table
T = int(input())
for test_case in range(1, T + 1):
base64_Encoding = input()
table= make_table()
binary = ''
for c in base64_Encoding :
b = bin(table[c])[2:] # ob110 -> 110
bits6 = '0' * (6 - len(b)) + b # 110 -> 000110
binary += bits6
index = 0
sentence = ''
while index <len(binary) :
bits8 = binary[ index : index + 8 ]
decimal = int(bits8, 2) # ASCII -> string
sentence += chr(decimal)
index += 8
print(f'#{test_case} {sentence}')
728x90
'코딩 테스트 > SW Expert Academy' 카테고리의 다른 글
[SW Expert Academy] 1983. 조교의 성적 매기기 파이썬 정답 코드 (0) | 2023.05.04 |
---|---|
[SW Expert Academy] 1946. 간단한 압축 풀기 파이썬 정답 코드 (0) | 2023.05.04 |
[SW Expert Academy] 1984. 중간 평균값 구하기 파이썬 정답 코드 (0) | 2023.05.04 |
[SW Expert Academy] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 파이썬 정답 코드 (0) | 2023.05.03 |
[SW Expert Academy] 1859. 백만 장자 프로젝트 파이썬 정답 코드 (0) | 2023.05.03 |