알고리즘 PS

[Python] 백준 #1373 2진수 8진수

on_doing 2021. 1. 14. 20:02
728x90

www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

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

www.acmicpc.net

요즘 시간초과 때문에 애먹고있다 ㅠㅠ

밑에 코드는 처음 시간초과 난 코드

#시간초과

a=input()
k=0
n_10=0
for i in range(len(a)-1,-1,-1):
    n_10+=int(a[k])*(2**i)
    k+=1

result=[]

while n_10 >= 8:
    result.append(n_10%8)
    n_10=n_10//8
    
result.append(n_10)

result=list(reversed(result))

print(''.join(map(str,result)))
        

밑에 코드로 수정해서 통과했다.!

#맞음
a=input()
List=list(reversed(a))

n=len(List)//3 #3개씩 반복 횟수
m=len(List)%3 #남은 것들
k=0
result=[]

for j in range(n):
    cnt=0
    for i in range(3):
        cnt+=int(List[k])*(2**i)
        k+=1
    result.append(cnt)

cnt=0
for j in range(m):
    cnt+=int(List[k])*(2**j)
    k+=1
    
result.append(cnt)
        
        
result=list(reversed(result))
print(int(''.join(map(str,result))))
728x90