https://school.programmers.co.kr/learn/courses/30/lessons/120885
종민님과 함께한 세미... 페어프로그래밍.
#문제 설명
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
#제한사항
return 값은 이진수를 의미하는 문자열입니다.
1 ≤ bin1, bin2의 길이 ≤ 10
bin1과 bin2는 0과 1로만 이루어져 있습니다.
bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
#입출력 예
bin1 bin2 result
"10" "11" "101"
"1001" "1111" "11000"
4가지 풀이 방법
1. bin()과 슬라이싱을 이용한 간단한 풀이
def solution(bin1, bin2):
answer = bin(int(bin1,2) + int(bin2,2))[2:]
return answer
2. bin을 사용하지 않고, map()함수 사용
def _result(bin1, bin2):
sum1 = _sum(bin1)
sum2 = _sum(bin2)
return sum1+sum2
def _sum(bin1):
sum1 = 0
cnt = 0
for i in reversed(list(bin1)):
if i == "1":
sum1 += 2 ** cnt
cnt += 1
return sum1
def solution(bin1, bin2):
a = _result(bin1,bin2)
bin_list = []
while True:
bin_list.insert(0,a % 2)
a //= 2
if a <= 0:
break
num_str = ''.join(map(str,bin_list))
return num_str
3. solution 함수 변형 1 - map()과 join()을 사용x
def solution(bin1, bin2):
a = _result(bin1,bin2)
bin_list = ''
while True:
_str = str(a % 2)
bin_list = _str + bin_list
a //= 2
if a <= 0:
break
return bin_list
4. solution 함수 변형 2
def solution(bin1, bin2):
a = _result(bin1,bin2)
bin_list = []
while True:
_str = str(a % 2)
bin_list.insert(0, _str)
a //= 2
if a <= 0:
break
return ''.join(bin_list)
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 비밀지도 (1) | 2023.04.28 |
---|---|
프로그래머스 - OX퀴즈 (0) | 2023.04.26 |
프로그래머스 - 둘만의 암호 (0) | 2023.04.21 |
프로그래머스 2레벨 - 귤 고르기 (0) | 2023.04.20 |
프로그래머스 - 직사각형 넓이 구하기 (0) | 2023.04.20 |