10936번: BASE64 디코딩

첫째 줄에 문자열 S를 BASE64로 인코딩한 결과가 주어진다. S는 알파벳 대문자와 소문자, 그리고 숫자로만 이루어져 있으며, 길이는 최대 50이다.

www.acmicpc.net

#!/bin/python3
# base64 디코딩

import string

BIT = 8

if __name__ == "__main__":
    table = string.ascii_uppercase + string.ascii_lowercase + string.digits + "+/"
    b64_table = dict()
    count = 0
    
    # Create base64 Table
    for char in table:
        b64_table[char] = str(count)
        count += 1
    
    # Input cipher text
    cipher = input("").replace("=","")
    reverse = ''
    
    # cipher => ascii
    for char in cipher:
        reverse += b64_table[char]+" "
        
    # ascii => binary
    reverse = reverse.strip().split(" ")
    binary = ''
    for i in reverse:
        binary += bin(int(i))[2:].zfill(6)

    count = int(len(binary) / BIT)
    plaintext = ''
    for i in range(0,count):
        plaintext += chr(int(binary[i * BIT : (i+1) * BIT], 2))
    print(plaintext)

'BaekJoon' 카테고리의 다른 글

[BaekJoon] - 10773 제로  (0) 2019.10.13
[BaekJoon] - 10871 x보다 작은 수  (0) 2019.10.13
[BaekJoon] - 10936 base64 디코딩  (0) 2019.10.12
[BaekJoon] - 10935 base64 인코딩  (0) 2019.10.12
[BaekJoon] - 10845 큐  (0) 2019.10.12
[BaekJoon] - 10828 스택  (0) 2019.10.12