Algorithm/백준
[BOJ] 2998 - 8진수
비번변경
2022. 6. 8. 14:34
문제
https://www.acmicpc.net/problem/2998
창영이는 2진법 수를 8진법 수로 변환하려고 한다. 창영이가 사용한 방법은 아래와 같다.
1. 2진수의 길이가 3으로 나누어 떨어질 때까지 수의 앞에 0을 붙인다.
2. 그 다음, 3자리씩 그룹을 나눈다.
3. 아래의 표를 참고해 8진수로 바꾼다.
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
창영이가 사용한 방법을 이용해 2진수를 입력받아 8진수를 바꾸는 프로그램을 작성하라.
입력의 첫번째 줄에 2진수가 주어진다.
풀이
Python에서 2진수를 입력받는 방법과 정수를 8진수를 변환하는 방법을 알면 간단하게 해결할 수 있다.
1. int(x, base=10)
int 함수의 base는 x의 진수에 해당하며 기본값은 10이다. 따라서 2진수를 입력받을 때는 아래와 같은 형태로 사용할 수 있다.
int(sys.stdin.readline(), 2)
# 예시
print(int(sys.stdin.readline(), 2))
출력은 10진수로 출력된다.
2. bin(), oct(), hex()
각 함수는 입력받은 숫자를 2진수, 8진수, 16진수 형태의 문자열로 변환한다.
bin(10)
oct(10)
hex(10)
위 2개의 함수를 조합하여 아래와 같은 코드로 문제를 해결했다.
import sys
print(oct(int(sys.stdin.readline(), 2))[2:])
숫자값만 나타낼 수 있도록 앞의 두 자리는 제외하고 출력한다.
참고 문서
https://docs.python.org/ko/3/library/stdtypes.html
https://www.daleseo.com/python-int-bases/