알고리즘

백준 파이썬 1373번 2진수8진수

chaewonni 2023. 5. 18. 14:20

from collections import deque

queue = deque()

s = input()  # 사용자로부터 입력을 받습니다. 예: "11001100"
num_list = [int(digit) for digit in s]

if len(num_list) % 3 == 1:
    queue.append(0)
    queue.append(0)
    for i in range(len(num_list)):
        queue.append(num_list[i])

elif len(num_list) % 3 == 2:
    queue.append(0)
    for i in range(len(num_list)):
        queue.append(num_list[i])

else:
    for i in range(len(num_list)):
        queue.append(num_list[i])

e_list=[]

while len(queue) != 0:
    num1=queue.popleft()
    num2=queue.popleft()
    num3=queue.popleft()

    num=num1*4+num2*2+num3*1
    e_list.append(num)

print(''.join(map(str, e_list)))

#bin() : 10진수를 2진수로 바꿔주고, 접두어 '0b'가 붙는다.

#oct(): 10진수를 8진수로 바꿔주고, 접두어 '0o'가 붙는다.

#hex(): 10진수를 16진수로 바꿔주고, 접두어 '0x' 가 붙는다.

#print(oct(int(input(),2))[2:])
#입력받은 수를 10진수로 바꾸고, oct로 다시 8진수로 바꿔준다, 인덱스 2부터 출력

맨처음 if,elif,else문은 입력받은 2진수를 8진수로 변환하기 위해서는 3자리씩 끊어서 계산하기 쉽도록 앞에 0을 붙여주어야 한다. 나머지가 1이라면 0을 2개 붙여주고, 나머지가 2라면 0을 1개 붙여줘서 큐에 넣어준다. 

그리고 큐가 0이 아닐때까지 큐에서 3개씩 pop시켜서 8진수로 만들어주는 식을 만들어 e_list에 넣어주었다.

 

근데

.

.

.

열심히 큐를 써서 코드를 작성했는데... 파이썬 자체에 진수를 계산해주는 함수가 있다고...

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

이거 한줄이면 코드 끝...^^

파이썬은 함수가 정말 많은 것 같당