알고리즘/백준

[파이썬] BOJ_1212(8진수 2진수)

딱따구르리 2022. 8. 13. 16:20
728x90
반응형

문제

 

https://www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net


 

해설

https://www.ibm.com/docs/ko/aix/7.1?topic=adapters-ascii-decimal-hexadecimal-octal-binary-conversion-table 

 

ASCII, 10진수, 16진수, 8진수, 2진수 변환표

이 테이블에서는 ASCII, 10진수, 16진수, 8진수, 2진수 값 변환에 도움이 되는 정보를 참조할 수 있습니다. 표 1. ASCII, 10진수, 16진수, 8진수, 2진수 값 사이의 변환 ASCII 10진수 16진수 8진수 2진 널(null) 0

www.ibm.com

위 글을 보면 

8진수는 0부터 7까지로 표현이 가능하다

 

미리 배열을 만들어 2진수를 넣어두고 입력받은 8진수의 각 자릿수에 해당하는 2진수로 바꿔주면 된다.

 

그러나 문제에서 입력받은 수가 0인 경우를 제외하고,

모든 출력은 1로 시작한다고 했기 때문에 

변경된 2진수 값을 넣은 res 문자열을 배열로 바꿔 첫문자가 1이 될 때 까지 pop해주면 된다.


코드

 

-파이썬

#백준 1212(8진수 2진수)

arr = ["000", "001", "010", "011", "100", "101", "110", "111"]  #0~7
n = list(input())

if n[0] == '0' and len(n) == 1:  #입력받은 값이 0일 때
    print(0)
else:
    res = ""
    for i in range(len(n)):
        res += arr[int(n[i])]

    res = list(res)  #젤 첫 문자가 0이면 지우기 위해 리스트로 변경

    while res:
        if res[0] == '0':
            res.pop(0)
        else:
            break
    print("".join(res))
728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[파이썬] BOJ_8958(OX퀴즈)  (0) 2023.05.21
[파이썬] BOJ_17608(막대기)  (0) 2022.11.07
[파이썬] BOJ_2745(진법 변환)  (0) 2022.08.12
[파이썬] BOJ_10866(덱)  (0) 2022.06.10
[파이썬] BOJ_10828(스택)  (0) 2022.05.24