본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.9] 중복 문자 삭제하기 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 7.
반응형

중복 문자 삭제하기


문제설명

 

알파벳 문자열이 주어질 때, 연속하는 중복 문자를 삭제하려고 합니다.

영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 매개변수로 주어질 때, 연속하는 중복 문자를 삭제한 결과를 reutrn 하도록 solution 함수를 작성하였습니다. 

그러나, 코드 일부분이 잘못되어있기 때문에 올바르게 동작하지 않으므로 한 줄만 변경해서 올바르게 동작하도록 수정하세요.

 


예시 

 

characters return
"seteeeencccccceeee" "sentence"

 


수정해야할 코드 

더보기
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

char* solution(char* characters) {
	char* result = malloc(sizeof(char) * strlen(characters));
	int result_len = 0;
	result[0] = characters[0];
	result_len++;
	for (int i = 0; i < strlen(characters); i++) {
		if (characters[i - 1] != characters[i]) {
			result[result_len] = characters[i];
			result_len++;
		}
	}
	result[result_len] = NULL;
	return result;
}

 

수정

for (int i = 0; i < strlen(characters); i++)

for (int i = 1; i < strlen(characters); i++)

 

전체 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

char* solution(char* characters) {
	char* result = malloc(sizeof(char) * strlen(characters));
	int result_len = 0;
	result[0] = characters[0];
	result_len++;
	for (int i = 1; i < strlen(characters); i++) {
		if (characters[i - 1] != characters[i]) {
			result[result_len] = characters[i];
			result_len++;
		}
	}
	result[result_len] = NULL;
	return result;
}

int main() {
	char* characters = "senteeeencccccceeee";

	char* ret = solution(characters);

	printf("solution 함수의 반환 값은 %s 입니다.\n", ret);
}
반응형

댓글