반응형
정렬되어 있는 알파벳(모두 소문자)으로 이루어진 문자열 word1과 문자열 word2을 merge 하여 answer 배열에 넣는 함수 solution을 작성하시오. word1과 word2내에서는 문자 중복이 없으며 word1과 word2간에 중복된 문자는 둘 중 하나만 answer 배열에 넣도록 한다.
입력:
abcxy
dcz
출력:
abcdexyz
입력:
abc
bcde
출력:
abcde
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char answer[20];
char* solution(char* word1, char* word2)
{
int i = 0, idx1 = 0, idx2 = 0; //idx1: word1의 인덱스 idx2: word2의 인덱스
// word1이나 word2가 끝날 때까지 비교하면서 answer에 넣음
while (word1[idx1] != '\0' && word2[idx2]!='\0') {
if (word1[idx1] < word2[idx2]) //word1[idx1]가 word2[idx2]보다 더 앞에 있을때
answer[i++] = word1[idx1++];
else if (word1[idx1]>word2[idx2]) //word2[idx2]가 word1[idx1]보다 더 앞에 있을 때
answer[i++] = word2[idx2++];
else { //같으면 둘 중 하나만 넣고(word1[idx1]) 그 다음 문자와 비교해야하므로 idx2도 증가
answer[i++] = word1[idx1++];
idx2++;
}
}
// word1이 남아있으면
while (word1[idx1] != '\0')
answer[i++] = word1[idx1++];
// word2이 남아있으면
while (word2[idx2] != '\0')
answer[i++] = word2[idx2++];
answer[i] = '\0';
return answer;
}
int main(void) {
char word1[20], word2[20];
scanf("%s", word1);
scanf("%s", word2);
printf("%s\n", solution(word1, word2));
}
반응형
'⚙️ 알고리즘 > 기타 문제 & 풀이' 카테고리의 다른 글
[C] 하노이탑(the tower of hanoi) 재귀 (2) | 2020.07.23 |
---|---|
[C] 문자열을 입력받아 첫 번째로 등장하는 단어 출력 (0) | 2020.07.18 |
[C] 부분집합 여부 판단 (0) | 2020.07.17 |
[C] 사방의 값 채우기(지뢰찾기 변형) (0) | 2020.07.17 |
[C] 3X3 게임판의 Tic-Tac-Toe (0) | 2020.07.17 |