https://www.acmicpc.net/problem/1212
문제 풀이
시간초과 풀이
- 8진수에서 2진수로 변환하는 방법을 찾아보니 8진수를 한자리씩 끊어 그 수를 2진수로 바꾸면 된다고 한다
- 예시 ) 314 => 3 = 011 / 1 = 001 / 4 = 100 ==> 011001100 => 11001100
- 구현 문제라 이를 코드로 구현했는데 시간 초과가 떴다,,
# 8진수 => 2진수
# 8진수 1개씩 끊어 2진수로 만들어주기
# ex ) 3 => 011, 1 => 001, 4 => 100
n = input() # 8진수
result = []
answer = ''
for num in n: # 수의 길이 333334가 최대,,,
#print(num)
for _ in range(3):
result.append(str(int(num) % 2))
num = int(num) // 2
result = result[::-1]
#print(result)
answer += ''.join(result)
result = []
print(int(answer))
다른사람 풀이
- 다른 사람풀이를 보니 파이썬에는 8진수를 2진수로 바꿔주는 내장함수가 존재했다(2진수 => 8진수도 존재)
- bin() 함수를 사용하면 x진수를 2진수로 변환할 수 있다 (8진수 변환함수 = oct())
- 또한 int(input(), 8) 로 입력받을 시 8진수로 입력받을 수 있다
- [2:]를 한 이유는 bin()사용시 '0bxxxx'로 나오기 때문에 0b를 잘라주기 위해 사용했다
print(bin(int(input(), 8))[2:])