본문 바로가기

백준/python

2729: 이진수 덧셈(python)

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

 

2729번: 이진수 덧셈

이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십

www.acmicpc.net

 

문제

이진수 덧셈은 매우 간단하고, 십진수 덧셈과 비슷하게 하면 된다. 십진수 덧셈을 할 때는, 오른쪽부터 왼쪽으로 차례대로 숫자 하나씩 더하면 된다. 이진수 덧셈도 이와 비슷하게 하면 된다. 십진수 덧셈은 외워야 할 덧셈이 많지만, 이진수 덧셈은 아래와 같이 5가지만 기억하면 된다.

  • 0 + 0 = 0
  • 1 + 0 = 1
  • 0 + 1 = 1
  • 1 + 1 = 10
  • 1 + 1 + 1 = 11

두 이진수가 주어졌을 때, 그 합을 이진수로 출력하는 프로그램을 작성하시오.

풀이

이런 진수 관련 문제를 풀때 항상 말하는 것이지만, 일단 계산전에 받을때는 무조건 정수화 하지말고 문자열로 받은 다음에 정수 처리를 해 줘야 오류가 안 생긴다. bin, oct같은 함수를 사용하면 앞에 항상 0c 0b같은 문자열이 달라붙어 정수 계산이 불가능하다.

 

따라서 일단 문자열로 받고 정수 처리와 동시에 2진화를 해준 후 계산해주면 된다.

 

코드

n=int(input()) #test case

#2진수 덧셈
for i in range(n): 
    a,b=input().split(" ") #int로 받으면 안됨!
    a=int(a,2) #2진수화
    b=int(b,2) #2진수화
    print(bin(a+b)[2:]) #bin 함수같은 진수법 함수 앞에 나오는 표기 2칸 이후 숫자만 출력되게함

 

'백준 > python' 카테고리의 다른 글

1259:팰린드롬 수(python)  (0) 2023.09.14
2693:N번째 큰수(python)  (0) 2023.09.14
4344:평균은 넘겠지(python)  (0) 2023.09.14
2033:반올림(python)  (0) 2023.09.14
5585: 거스름돈(python)  (0) 2023.09.14