동캄의 코딩도장

백준 1373 [2진수 8진수] 파이썬 본문

코테/BOJ

백준 1373 [2진수 8진수] 파이썬

동 캄 2022. 2. 9. 20:18

https://www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

from audioop import reverse


n = list(map(int, input()))
n.reverse()
val = 0
for i in range(len(n)):
    val += n[i]*(2**i)
answer = ''
while val != 0:
    answer += str(val % 8)
    val = val//8

print(answer[::-1])

맨 처음에는 2진수 -> 10진수 -> 8진수로 변경하여 문제를 해결하려고 하였다.

그러나 시간초과가 발생하였다.

lst = list(map(int, input()))
c = len(lst)//3
answer = ''
for _ in range(c):
    f = lst.pop()
    s = lst.pop()
    t = lst.pop()
    answer += str(t*4+s*2+f)

if len(lst) == 2:
    f = lst.pop()
    s = lst.pop()
    answer += str(s*2+f)
elif len(lst) == 1:
    f = lst.pop()
    answer += str(f)

print(answer[::-1])

2진수를 바로 8진수로 변경하였다.