https://www.acmicpc.net/problem/1252
[문제]
두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오.
[입력]
첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다.
각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다.
또한 각 이진수의 길이는 80을 넘지 않는다.
[출력]
첫째 줄에 이진수 덧셈 결과를 출력한다.
결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다.
[예제 입력1]
1001101 10010
[예제 출력1]
1011111
나의 풀이
a,b = map(str, input().split())
a = int(a, 2)
b = int(b, 2)
sum = format(a+b, 'b')
print(sum)
해당 문제를 풀기 전에 파이썬에서 제공되는 함수에 대해서 찾아보았다.
- 2진수 : 0b (binary number) / 함수 : bin
- 8진수 : 0o (octal number) / 함수 : oct
- 16진수 : 0x (hexadecimal number) / 함수 : hex
1️⃣ 내장 함수를 이용한 출력
ㅇ 2진수를 10진수로 변환
a = int(input(), 2)
print(a)
[입력] : 110
[출력] : 6
ㅇ 10진수를 2진수로 변환
a = int(input())
b = bin(a)
print(b)
[입력] : 220
[출력] : 0b11011100
ㅇ 8진수를 10진수로 변환
a = int(input(), 8)
print(a)
[입력] : 123123
[출력] : 42579
ㅇ 16진수를 10진수로 변환
a = int(input(), 16)
print(a)
[입력] : a10
[출력] : 2576
ㅇ 10진수를 16진수로 변환
a = int(input())
b = hex(a)
print(a)
[입력] : 220
[출력] : 0xdc
2️⃣ 출력 시 앞에 붙은 접두어(0x, 0b, 0c)를 없애는 방법
ㅇ format(인자값, 접두어)
num = 100
num_b = format(num, 'b') #2진수
num_o = format(num, 'o') #8진수
num_x = format(num, 'x') #16진수
'문제풀이' 카테고리의 다른 글
[백준] 1173번 파이썬 풀이 (0) | 2022.04.01 |
---|---|
[백준] 1371번 파이썬 풀이 (0) | 2022.03.28 |
[백준] 1159번 파이썬 풀이 (0) | 2022.03.23 |
[백준] 1267번 파이썬 풀이 (0) | 2022.03.23 |
[백준] 10870번 파이썬 풀이 (0) | 2022.03.21 |