📝 문제
💡 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.
⚙️ 입력 : 첫째 줄에 8진수가 주어진다.
주어지는 수의 길이는 333,334을 넘지 않는다.
⚙️ 출력 : 첫째 줄에 주어진 수를 2진수로 변환하여 출력한다.
수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.
1212번: 8진수 2진수
첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.
www.acmicpc.net
✅ 풀이
# 시간 초과 코드
n = input()
answer = ""
for item in n:
num = int(item)
temp = ["0","0","0"]
k = 2
while num >= 1:
temp[k] = str(num%2)
num = num // 2
k -= 1
for i in temp:
answer += i
if answer[0] == "0":
print(answer[1:])
else:
print(answer)
💡 처음엔 8진수를 2진수로 변환하는 과정을 수학적으로 접근했다.
8진수의 각 자릿수를 2진수로 변환하여 합쳐주면 되기 때문에, 해당 과정을 구현했다.
그러나 8진수의 길이가 30만을 넘어가다보니, 반복 과정에서 시간 초과가 발생하는 듯 했다.
# 정답 코드
n = int(input(), 8)
print(bin(n)[2:])
💡 그래서 어쩔수 없이 진법을 자동으로 변환하도록 했다.
코드 자체는 간결하지만, 멋은 없는 것 같다..