10935번: BASE64 인코딩

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

www.acmicpc.net

 

#!/bin/python3
# base64 인코딩

import string

BIT = 6

def padding(binary):
    return binary + '0' * (BIT - len(binary) % 6)

if __name__ == "__main__":
    b64_table = dict()
    count = 0
    
    for char in string.ascii_uppercase + string.ascii_lowercase + string.digits + "+/":
        b64_table[str(count)] = char
        count += 1
    
    plaintext = input("")
    binary = ''
    for char in plaintext:
        binary += bin(ord(char))[2:].zfill(8) 
    
    if len(binary) % BIT != 0:
        binary = padding(binary)
        
    count = int(len(binary) / BIT)
    encode = ''
    for i in range(0, count):
        bit6 = binary[i * BIT : (i+1) * BIT]
        encode += b64_table[str((int(bit6,2)))]
    
    if len(plaintext) % 3 != 0:
        encode += "=" * (3 - len(plaintext) % 3)
        
    print(encode)

'BaekJoon' 카테고리의 다른 글

[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
[BaekJoon] 1158번 조세퍼스 문제  (0) 2019.10.10