본문 바로가기

코딩테스트/BOJ

[백준/파이썬] 1373번: 2진수 8진수 (Python)

문제

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

 

1373번: 2진수 8진수

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

www.acmicpc.net

풀이

 - 수학, 문자열

 

 - 숫자를 리스트에 역순으로 담은 뒤, 3자리씩 끊어서 계산했다.

코드

n = list(input())

cnt, num = 1,1
sumN = 0
result = ''

arr = []
# 슬라이싱을 통한 역순
for i in n[::-1]:
    arr.append(i)

for idx in range(len(arr)):
    sumN = sumN + (int(arr[idx]) * num)
    num = num*2
    cnt = cnt + 1
    if cnt > 3 or idx == len(arr)-1:
        result = result + str(sumN)
        sumN = 0
        cnt, num = 1,1

            
print(''.join(reversed(result)))