728x90
반응형
백준 홈페이지 문제와 개인적인 해설을 작성한 글 입니다.
문제를 보기 전에
진수 변환의 경우에 파이썬 함수들을 사용하면 쉽게 구현할 수 있습니다.
구현 파트이니까?! 필자는 함수들을 사용하지 않고 직접 구현해보는 식으로 작성을 진행했습니다.
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
반응형