https://school.programmers.co.kr/learn/courses/30/lessons/120885
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Algorithm
Idea
모듈안쓰고 풀어볼라니 골치 아파 죽을것같다..
먼저, 계산은 다음과 같다.
1. binary 수 두개를 리스트에 역순서로 저장 ( ← 순으로 계산하기 위해 )
2. 이제 각 자리수를 더해준다. 자리수 계산. 이때 carry가 있으면 다음 계산을 위해 carry에 저장.
Python
def solution(bin1, bin2):
answer = bin(int(bin1,2) + int(bin2,2))[2:]
return answer
def solution(bin1, bin2):
answer = ''
bin1 = list(bin1[::-1])
bin2 = list(bin2[::-1])
result = []
carry = 0 # 자리 올림 변수
# 두 이진수를 더함
while bin1 or bin2 or carry:
# 두 이진수 현재 자리수를 더하고, 자리올림값을 더함
total = carry
if bin1:
total+=int(bin1.pop(0))
if bin2:
total+=int(bin2.pop(0))
# 자리 올림 처리
carry = total // 2
total %= 2
# 현재 자리 결과를 결과 리스트에 추가
result.append(str(total))
return ''.join(result[::-1])
Java
class Solution {
public String solution(String bin1, String bin2) {
return Integer.toString(Integer.parseInt(bin1, 2) + Integer.parseInt(bin2, 2),2);
}
}
import java.lang.StringBuilder;
class Solution {
public String solution(String bin1, String bin2) {
StringBuilder result = new StringBuilder();
int carry = 0;
int i = bin1.length() - 1;
int j = bin2.length() - 1;
while (i >= 0 || j >= 0 || carry == 1){
int total = carry;
if(i>=0){
total += Character.getNumericValue(bin1.charAt(i));
i--;
}
if(j>=0){
total += Character.getNumericValue(bin2.charAt(j));
j--;
}
carry = total / 2;
result.append(total % 2);
}
return result.reverse().toString();
}
}
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 요격 시스템 (PYTHON, JAVA) (1) | 2024.10.02 |
---|---|
[Programmers] 과제 진행하기 (PYTHON, JAVA) (0) | 2024.09.26 |
[Programmers] 다항식 더하기 (PYTHON, JAVA) (0) | 2024.03.31 |
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (2) | 2024.03.31 |
[Programmers] 직사각형 넓이 구하기 (PYTHON, JAVA) (0) | 2024.03.31 |