본문 바로가기

cospro2급/cospro_1차

2021-05-07

cospro 9번 문제

중복문자 삭제하기

 

문제 설명

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

예를 들어, "senteeencccccceeee"라는 문자열이 주어진다면, "sentence"라는 결과물이 나온다.

영어 소문자 알파벳으로 이루어진 임의의 문자열 charachers가 매개변수로 주어질 때, 연속하는 중복문자들을 삭제한 결과를 return하는 solution 함수를 작성한다.

 

매개변수 설명

영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 solution 함수의 매개변수로 주어진다.

characters는 알파벳 소문자로만 이루어져 있다.

characters의 길이는 10 이상 100 이하이다.

 

return값 설명

characters에서 연속하는 중복 문자를 제거한 문자열을 return한다.

 

예시

코드 설명

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

char* solution(char* characters) {
	char* result = malloc(sizeof(char)*strlen(characters)); 
    //characters와 똑같은 길이의 result라는 배열을 동적할당
	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++;
		}
        //characters[i-1]과 characters[i]를 비교하여 다르면 result에 넣어준 후 result에 
        //result에 해당하는 방번호를 ++한다.
	}
	result[result_len] = NULL;
	return result;
}

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

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

  반복문에 들어가 조건을 체크하기 전 characters의 0번방을 result의 0번방에 넣어준다. 그 후 result에 해당하는 방번호를 1을 더해줬기 때문에 반복문에서는 characters의 방번호인 i를 1을 더해준 후 조건을 체크해야 한다. 그렇지 않을 경우 첫 알파벳에 해당하는 값이 중복으로 들어가게 된다.

 

edu.goorm.io/learn/lecture/16921/cos-pro-2%EA%B8%89-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-c%EC%96%B8%EC%96%B4/lesson/817992/1%EC%B0%A8-%EB%AC%B8%EC%A0%9C9-%EC%A4%91%EB%B3%B5%EB%AC%B8%EC%9E%90-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0

'cospro2급 > cospro_1차' 카테고리의 다른 글

2021-05-07  (0) 2021.05.07
2021-05-06  (0) 2021.05.06
2021-05-06  (0) 2021.05.06
2021-05-05  (0) 2021.05.05
2021-05-05  (0) 2021.05.05