본문 바로가기

알고리즘/백준알고리즘

[백준 알고리즘/Python] 1373 2진수 8진수

문제

 

문제이해

문자를 받아와서 오른쪽부터 3개씩 끊어서 8진수를 얻는 것을 생각했습니다.

그런데 문자가 1,2개 남으면 앞에 0을 붙혀줘야하니 [0,0]을 붙혀주는 것으로 처리를 했습니다.

 

코드

binary = list(map(int,input()))
result = ""


for i in range(0,len(binary),3):
    if(len(binary) <3):
        binary = [0,0] + binary

    x = binary.pop() * 1
    y = binary.pop() * 2
    z = binary.pop() * 4
    result = str(x+y+z) + result
print(result)

 

 

다른사람의 코드를 보니 정말 쉽게했습니다.

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

int() 함수는 주로 타입캐스팅에 사용된다, int() 함수의 두번째 인자는 진법을 의미한다, default는 10이기 때문에 값을 따로 입력을 안해줄 경우 10진수로 인식한다.

따라서 위 코드는 2진수를 입력받고 8진수로 출력을 하되, 앞에 붙는 8진수를 알려주는 문자 0o를 제외하고 출력하도록 하는 코드다.

728x90