반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120885
🐍파이썬
def solution(bin1, bin2):
return bin(int(bin1, 2)+ int(bin2, 2))[2:]
1️⃣ int 함수 두 번째 인자에 2를 넣어 bin1, 2를 이진수로 인식시킨 후 덧셈을 수행한다.
2️⃣ 덧셈 수행 결과를 bin()으로 출력하고, 앞의 "0b"를 삭제하기 위해 슬라이싱을 진행했다.
💡 int(value, base)
base에 진법(범위: 2 ~ 36)을 입력할 수 있다. 입력하지 않을 경우 기본으로 10이 넘어간다.
다른 풀이 방법
def solution(bin1, bin2):
answer = 0
bin1_size = len(bin1)
bin2_size = len(bin2)
sum = 0
for i in bin1:
sum += int(i) * (2 ** (bin1_size - 1)) #이진수 각 자리수의 합을 구한다.
bin1_size -= 1
for i in bin2:
sum += int(i) * (2 ** (bin2_size - 1)) #ex)101 -> 1*(2**2) + 0*(2**1) + 1*(2**0)
bin2_size -= 1
answer = str(bin(sum))[2:]
return answer
🐥자바스크립트
function solution(bin1, bin2) {
return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2);
}
1️⃣ parseInt 함수 두 번째 인자에 2를 넣어 bin1, 2를 이진수로 인식시킨 후 덧셈을 수행한다.
2️⃣ 덧셈 수행 결과를 toString(2)를 통해 이진수로 출력했다.
- radix (Optional)
string의 진수를 나타내는 2부터 36까지의 정수. 기본 값은 10이 아님에 주의. Number 자료형이 아닌 경우 Number로 변환
숫자 및 BigInts의 경우 toString()은 선택적으로 기수(radix)를 매개변수로 취한다. 기수의 값은 최소 2부터 36까지이다.
다른 풀이 방법
function solution(bin1, bin2) {
let temp = Number(bin1) + Number(bin2); //십진수 계산
temp = [...temp.toString()].reverse().map((v) => +v); //계산 값을 뒤집기
for (let i = temp.length; i < 11; i++) { //배열 길이가 11이 되도록 0을 push
temp.push(0);
}
for (let i = 0; i < temp.length; i++) {
if (temp[i] === 2) { //값이 2일 때 반올림
temp[i] = 0;
temp[i + 1]++;
} else if (temp[i] === 3) { //값이 3일 때 반올림
temp[i] = 1;
temp[i + 1]++;
}
}
return Number(temp.reverse().join("")).toString(); //값을 원래대로 뒤집고 문자열로 변환하여 리턴
}
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 대충 만든 자판(연습문제/ level 1) (0) | 2023.02.28 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] [1차] 뉴스 클러스터링(2018 KAKAO BLIND RECRUITMENT/ level 2) (0) | 2023.02.28 |
[프로그래머스 | 파이썬 / 자바스크립트] 연속 부분 수열 합의 개수(연습문제/ level 2) (0) | 2023.02.28 |
[프로그래머스 | 파이썬 / 자바스크립트] 유한소수 판별하기(코딩테스트 입문/ level 0) (0) | 2023.02.25 |
[프로그래머스 | 파이썬 / 자바스크립트] 대문자와 소문자(코딩테스트 입문/ level 0) (0) | 2023.02.25 |
[프로그래머스 | 파이썬 / 자바스크립트] 피로도(완전탐색/ level 2) (0) | 2023.02.25 |