본문 바로가기

백준

2024.7.4 백준(Python) 1373 2진수 8진수

2진수 8진수 

 

문제

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.

예제 입력 1 

11001100

예제 출력 1 

314

 

 

정답 코드

# 사용자로부터 입력받은 이진수 문자열
num_2 = input()

# 입력받은 이진수 문자열의 길이
Len_num2 = len(num_2)

# 3의 배수가 아닌 경우, 왼쪽에 '0' 또는 '00'을 추가하여 문자열의 길이를 맞춰줍니다.
if Len_num2 % 3 == 2:
    num_2 = '0' + num_2
if Len_num2 % 3 == 1:
    num_2 = '00' + num_2

# 변환된 8진수를 저장할 리스트
num_8 = []

# 입력받은 이진수를 3자리씩 끊어서 처리
for i in range(0, Len_num2, 3):
    # 3자리씩 끊어진 이진수 부분 문자열을 segment_3에 저장
    segment_3 = num_2[i:i+3]
    
    # segment_3를 2진수에서 8진수로 변환하여 result에 저장
    result = oct(int(segment_3, 2))
    
    # 변환된 8진수 문자열에서 '0o'를 제외하고 num_8 리스트에 추가
    num_8.append(result[2:])

# 변환된 8진수를 공백 없이 출력
print(*num_8, sep="")