[SWEA/Python] 1928. Base64 Decoder
SW Expert Academy
SW νλ‘κ·Έλλ° μλ κ°νμ λμμ΄ λλ λ€μν νμ΅ μ»¨ν μΈ λ₯Ό νμΈνμΈμ!
swexpertacademy.com
λ¬Έμ λ₯Ό μ΄ν΄νλ κ²λΆν° μκ°μ΄ μ’ κ±Έλ Έλλ° μμ½νμλ©΄
1. input λ¬Έμμ΄μ κ° λ¬Έμλ₯Ό μ£Όμ΄μ§ νμ 10μ§μ μ«μλ‘ λ§€ννλ€.
2. 10μ§μ μ«μλ€μ 6λΉνΈμ§λ¦¬ 2μ§μλ‘ νννλ€.
3. 8λΉνΈμ© λμ΄ 10μ§μ μ«μλ‘ νννλ€.
4. 10μ§μ μ«μλ€μ μμ€ν€ μ½λλ‘ λ³νν΄ decodingλ μλ¬Έ ouput λ¬Έμμ΄μ μΆλ ₯νλ€.
def base64_decode(encoded_string):
base64_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
decoded_string = ""
decoding_table = {char: index for index, char in enumerate(base64_table)}
buffer = 0
count = 0
for char in encoded_string:
value = decoding_table[char]
buffer = (buffer << 6) | value
count += 6
if count >= 8:
count -= 8
decoded_string += chr((buffer >> count) & 0xFF)
buffer &= (1 << count) - 1
return decoded_string
T = int(input())
for tc in range(1, T + 1):
encoded_string = input()
decoded_string = base64_decode(encoded_string)
print(f"#{tc} {decoded_string}")
μ¬μ€ λλ 10μ§μλ₯Ό 2μ§μλ‘ λ³ννλ ν¨μλ₯Ό μ§μ ꡬνν΄μ νμ΄νλ € νλλ°, λκΈμ μ’μ νμ΄κ° μμ΄μ μ°Έκ³ νλ€. (Ro_LCHλ..π)
μ¬ννΈ μ°μ°μμ λΉνΈ μ°μ°μ μ¬μ©ν΄ 2μ§μλ‘ μ§μ λ³ννλ κ³Όμ μ μλ΅ν μ μμκ³ ,
bufferμ 6λΉνΈλ₯Ό μ μ¬νλ©° 8λΉνΈκ° λμ΄κ° λ λ°λ‘ μλ¬ΈμΌλ‘ ν κΈμμ© decodingμ μννλ€.
λΉνΈ μ°μ°μ μ€λ«λμ μ¬μ©νμ§ μμμ κ±°μ μκ³ μ΄μλλ° λ€μκΈ κ³΅λΆνλ κ³κΈ°κ° λλ€! π