반응형
📚 2진수 8진수
문제
2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.
예제 입력 1
11001100
예제 출력 1
314
✍ 접근
- 2진수 -> 8진수 변환 방법을 잘 몰랐기 때문에 먼저 그 방법을 알고 풀려고 했다
- 그런데 생각처럼 2진수 -> 8진수로 직접 신수 변환을 계산해야 하는 일은 없었다
- 파이썬의 내장 함수들을 적절하게 활용하자
정답 코드
print(oct(int(input(),2))[2:])
10진수 👉 2, 8, 16진수
2진수 : print(bin(10)) => 0b1010
8진수 : print(oct(10)) => 0o12
16진수 : print(hex(10)) => 0xa
그런데 출력된 내용에 접두사가 붙어있다
- 접두사를 제외하기 위해서는 [2:] 로 앞 두 접두어를 없애주거나
- format을 이용해 줄 수 있다
2,8,16진수 👉 10진수
int를 사용하면 된다
int( a, b ) 여기서 b(두번째 인자)의 default는 10이다 => 10진수라는 뜻
첫 번째 인자는 문자열이다.
2진수 -> 10진수 : print(int('1010', 2)))
8진수 -> 10진수 : print(int('1010', 8)))
16진수 -> 10진수 : print(int('1010', 16)))
여기서 뒤에 나온 숫자는 n진수라는 뜻이다
즉 n진수를 10진수로 변환한다는 말
따라서 정답 코드를 다시 보면
1. input으로 값을 받아와서
2. 2진수였던 기본 값을 int를 이용해 10진수로 변환시켜 준 다음
3. 그 값을 oct를 이용해서 8진수로 변환시켜준다
4. 마지막으로 3번 과정에서 생긴 접두어를 제거하고 print해주면 된다
⭐ 배움
- 파이썬 진수 변환 내장 함수에 대해서 알게 되었다
반응형
'🏄♀️ 코딩테스트 > 🐍 Python' 카테고리의 다른 글
[ Python ] 코딩 테스트에 꼭 필요한 파이썬 문법 (1) | 2022.04.21 |
---|---|
[ 백준 1920] ( python ) 수 찾기 (0) | 2022.04.19 |
[ 백준 17087] ( python ) 숨바꼭질 6 (0) | 2022.04.18 |
[ 백준 17298] ( python ) 오큰수 (0) | 2022.04.06 |
[ 백준 10799 ] ( python ) 쇠막대기 (0) | 2022.04.05 |