Keep going

[백준] 1373번 파이썬(python) - 2진수 8진수 본문

코딩/백준

[백준] 1373번 파이썬(python) - 2진수 8진수

Howard Schultz 2020. 8. 23. 14:22
반응형

 

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

 

1373번: 2진수 8진수

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

www.acmicpc.net

처음에는 파이썬 자체에 2진수, 8진수와 관련된 내장함수가 있다는 것을 모르고, 직접 2진수를 10진수로 바꾼 다음에 8진수로 바꾸려고 했다. 

import sys

x = sys.stdin.readline()
ten_number = 0
answer = ''
for i in range(len(x)):
    ten_number += int(x[-1])*(2**i)
    x = x[:-1]

while ten_number != 0: 
    answer += str(ten_number%8)
    ten_number = ten_number // 8
print(answer[::-1])

하지만 시간초과가 떴고, 무언가 문제가 있다고 느껴서 2진법, 8진법을 검색해보고 나서 내장함수가 있다는 것을 알 수 있었다. 놀라우리만큼 충격적인 답은 한줄이었다.

print(oct(int(input(),2))[2:])

int()에 ,를 찍고 뒤에 숫자를 넣으면 그 진법의 숫자를 받는다는 것이었다. 그리고 oct는 8진법을 의미한다. 8진법으로 숫자를 바꾸면 10진법이 아니기에 8진법을 나타내는 2글자를 숫자 앞에 넣어주는데 답안에서는 숫자만 표현해야 하므로, 앞의 두자리를 없애기 위해서 [2:]를 이용한다.

2진법, 8진법의 입,출력 방법을 배운 문제였다.

반응형