본문 바로가기
카테고리 없음

[Python] 백준 1252 이진수 덧셈 - 구현

by seopport 2023. 2. 5.
728x90
반응형

백준 홈페이지 문제와 개인적인 해설을 작성한 글 입니다.

 

백준 문제 - 1252번 : 이진수 덧셈

 

1252번: 이진수 덧셈

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

www.acmicpc.net

 


 

문제를 보기 전에

 

진수 변환의 경우에 파이썬 함수들을 사용하면 쉽게 구현할 수 있습니다.
구현 파트이니까?! 필자는 함수들을 사용하지 않고 직접 구현해보는 식으로 작성을 진행했습니다.

2진수로 나타낸 것을 10진수로 바꾼 후 계산하고, 그것을 다시 2진수로 바꾸어 진행했습니다.
모든 코드를 짤 때, 간결하게 짜는 것도 중요하지만 알아볼 수 있는 코드가 굉장히 중요하다고 생각합니다.
누구보다도 쉬운 코드를 짜려고 노력하고 있으니, 도움되셨으면 좋겠습니다.
간단한 구현이지만 추후 풀이 때 참고하셔서 진행하셨으면 좋겠습니다.

 

문제

 

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

 

입력

 

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

 

출력

 

첫째 줄에 이진수 덧셈 결과를 출력한다. 결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다.

 

예제 입력 1 예제 출력 1
1001101 10010 1011111

 

10 진수 를 2 진수 로 변환 코드

 

array = map(int, input().split())

# 10 진수를 2 진수로 나타내기
# 파이썬에서는 bin 함수를 이용할 수 있다.
# 역순 출력은 [::-1] 로 표현할 수 있다.
def binary_ten(x):
    answer = ''
    while x > 1:
        mod = x % 2
        x = x // 2
        answer = str(mod) + answer
    answer = str(x) + answer
    return answer


for i in array:
  print(binary_ten(i))

 

 

2 진수를 10 진수로 변환 코드

 

array = map(str, input().split())

# 2진수를 10진수로 변환
def binary_two(x):
  x = x[::-1]
  value = 0
  for i in range(len(x)):
    value += (int(x[i]) * (2 ** i))
  return value

for i in array:
  print(binary_two(i))

 

2진수를 10 진수로 바꾸는 것을 굉장히 간단하다.

자리 수에 따라 2 의 x 승을 한 값을 곱해주면 된다.

 

 

만일, 2진수 라는 말을 직접 넣지 않고 임의의 진수를 준다면 ?

 

 

math.pow(input_data, number)

 

 

 

정답 코드

 

array = map(str, input().split())

# 2진수를 10진수로 변환
def binary_two(x):
  x = x[::-1]
  value = 0
  for i in range(len(x)):
    value += (int(x[i]) * (2 ** i))
  return value

# 10 진수를 2 진수로 나타내기
# 파이썬에서는 bin 함수를 이용할 수 있다.
# 역순 출력은 [::-1] 로 표현할 수 있다.
def binary_ten(x):
    answer = ''
    while x > 1:
        mod = x % 2
        x = x // 2
        answer = str(mod) + answer
    answer = str(x) + answer
    return answer

sum = 0

# 2->10 후 합하기
for i in array:
  sum += binary_two(i)

print(binary_ten(sum))
728x90
반응형