문제
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
솔루션
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* bin1, const char* bin2) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int max = 0;
if(strlen(bin1) > strlen(bin2))
max = strlen(bin1);
else
max = strlen(bin2);
char* answer = (char*)malloc(max+1);
char* answer_ivs = (char*)malloc(max+1);
int num;
int index1 = strlen(bin1) - 1;
int index2 = strlen(bin2) - 1;
int n = 0;
int tmp = 0;
int num1 = bin1[index1] - 48;
int num2 = bin2[index2] - 48;
while(1){
if(tmp + num1 + num2 < 2)
{
num = tmp + num1 + num2;
tmp = 0;
}
else
{
num = tmp + num1 + num2 - 2;
tmp = 1;
}
answer_ivs[n++] = num + 48;
if(index1 == 0 && index2 == 0 && tmp == 0) break;
if(index1 > 0)
num1 = bin1[--index1] - 48;
else
num1 = 0;
if(index2 > 0)
num2 = bin2[--index2] - 48;
else
num2 = 0;
}
for(int i = 0; i < n; i++)
answer[i] = answer_ivs[n - i - 1];
answer[n] = '\0';
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/120885#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'프로그래머스코딩테스트연습풀이 > C언어' 카테고리의 다른 글
[프로그래머스/C언어] 소인수분해 (0) | 2023.08.30 |
---|---|
[프로그래머스/C언어] 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2023.08.21 |
[프로그래머스/C언어] 한 번만 등장한 문자 (0) | 2023.08.21 |
[프로그래머스/C언어] 진료 순서 정하기 (0) | 2023.08.20 |
[프로그래머스/C언어] 배열 만들기 5 (0) | 2023.08.20 |