2024/07/15
(Lv0) 175개 (Lv1) 25개
Lv0
- 수열과 구간 쿼리 4
- 문자열 반복해서 출력하기
- [PCCE 기출문제] 5번 / 산책
- 소인수분해
- 이진수 더하기
- 잘라서 배열로 저장하기
- 커피 심부름
- 조건에 맞게 수열 변환하기 2
Lv1
- 문자열 내림차순으로 배치하기
- 약수의 개수와 덧셈
💡오늘 가장 오래 걸린 문제
> 이진수 더하기
문제 설명 | 이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
입출력 예 |
bin1 |
bin2 |
result |
"10" |
"11" |
"101" |
"1001" |
"1111" |
"11000" |
문제 풀이 |
음.. 이게 최적의 알고리즘인지는 모르겠지만, 일단 해결했고 이진법은 오랜만이라 새로 공부하는 마음으 서술한다.
먼저, bin1과 bin2를 자연수로 환산하는 함수를 정의했다.
def to_num(a):
b = 1 ; num = 0
while a:
a1 = a.pop()
num += a1*b
b *= 2
return num
def solution(bin1, bin2):
bin1 = list(map(int,list(bin1))) #[::-1] ;
bin2 = list(map(int,list(bin2))) #[::-1]
number = to_num(bin1)+to_num(bin2)
if number == 0:
return '0'
answer = ''
while number:
answer += str(number%2)
number //= 2
answer = answer[::-1]
return answer
이후, string으로 주어지는 bin1, bin2를 원소가 int인 list로 변경하고
앞서 정의한 to_num 함수로 bin1+bin2를 number로 정의한다.
number를 2로 나누면서 나머지를 answer에 더하며 이진수를 구한다.
number가 0이 되면 answer를 순서를 뒤집고, 출력한다.