문제
문제이해
문자를 받아와서 오른쪽부터 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
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준 알고리즘/Python] 1463 1로 만들기 (0) | 2022.01.27 |
---|---|
[백준 알고리즘/Python] 1212 8진수 2진수 (0) | 2022.01.25 |
[백준 알고리즘/Python] 17087 숨박꼭질6 (0) | 2022.01.23 |
[백준 알고리즘/Python] 2004 조합 0의 개수 (0) | 2022.01.20 |
[백준 알고리즘/Python] 1676 팩터리얼 0의 개수 (0) | 2022.01.19 |