본문 바로가기

문제풀이

[백준] 1252번 파이썬 풀이

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

 

1252번: 이진수 덧셈

첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다.

www.acmicpc.net

[문제]

두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오.

[입력]

첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 
각 이진수는 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)

 

해당 문제를 풀기 전에 파이썬에서 제공되는 함수에 대해서 찾아보았다.

 

  1. 2진수 : 0b (binary number) / 함수 : bin
  2. 8진수 : 0o (octal number) / 함수 : oct
  3. 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