티스토리 뷰
이번 문제는 검색을 통해 알아본 방법과 문자열을 순차적으로 확인하는 방법을 알아보자.
1. Convert
using System;
public class Solution {
public string solution(string bin1, string bin2) =>
Convert.ToString(Convert.ToInt32(bin1, 2) + Convert.ToInt32(bin2, 2), 2);
}
먼저 Convert 방법은 굉장히 간단하고 속도도 빨랐다.
Convert클래스를 사용할 일이 많이 없어서 몰랐지만 매개변수를 추가적으로 주어 이진수로 변경할 수 있었다.
Convert 동작 자체가 굉장히 느릴 것이라는 나의 편견과 달리 속도도 굉장히 빠르게 처리되었다.
2. 문자 비교
using System;
public class Solution {
public string solution(string bin1, string bin2) {
return BinarySum(bin1, bin2);
}
public string BinarySum(string binary1, string binary2)
{
int maxLength = Math.Max(binary1.Length, binary2.Length);
int carry = 0;
string result = "";
for (int i = 0; i < maxLength; i++)
{
int bit1 = (i < binary1.Length) ? binary1[binary1.Length - 1 - i] - '0' : 0;
int bit2 = (i < binary2.Length) ? binary2[binary2.Length - 1 - i] - '0' : 0;
int sum = bit1 + bit2 + carry;
int bit = sum % 2;
carry = sum / 2;
result = bit.ToString() + result;
}
if (carry > 0)
result = carry.ToString() + result;
return result;
}
}
두번째 방법은 각 문자를 변환하여 이진수 덧셈을 하는 경우이다.
이 방법 또한 굉장히 신선했다.
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 입문) 소인수분해 (0) | 2023.07.05 |
---|---|
[Programmers] 입문) 컨트롤 제트 (문자열 컨트롤, 학습) (0) | 2023.07.04 |
[Programmers] 입문) 한 번만 등장한 문자 (학습) (0) | 2023.07.03 |
[Programmers] 입문) 숨어있는 숫자의 덧셈 (2) (Convert.ToInt32) (0) | 2023.07.03 |
[Prgrammers] 입문) 가까운 수 (이진탐색) (0) | 2023.07.02 |