문제
문자열 my_string과 정수 배열 indices가 주어질 때, my_string에서 indices의 원소에 해당하는 인덱스의 글자를 지우고 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
솔루션
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// indices_len은 배열 indices의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* my_string, int indices[], size_t indices_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(strlen(my_string) * sizeof(int));
int i, j;
int tmp;
for(i = 0; i < indices_len - 1; i++)
for(j = i + 1; j < indices_len; j++)
{
if(indices[i] > indices[j])
{
tmp = indices[i];
indices[i] = indices[j];
indices[j] = tmp;
}
}
j = 0;
int k = 0;
for(i = 0; i < strlen(my_string); i++){
if(i != indices[j])
answer[k++] = my_string[i];
else
j++;
}
answer[k] = '\0';
return answer;
}
문자열 관련 함수를 써서 하면 좀 더 짧고 깔끔했을 것 같은데
마땅한 함수가 생각이 안나서
indices함수를 sorting한 후에 비교하는 방법으로 풀었다
다른사람의 풀이를 보니
string에 my_string을 복사하고
for(int i = 0; i < indices_len; i++)
string[indices[i]] = ' '
로 indices배열의 값의 index에 해당하는 string에서의 값을 모두 ' '으로 만들고
' '이 아닌경우만 복사하도록하면
sorting과정을 쓰지 않아도 될 것 같다
https://school.programmers.co.kr/learn/courses/30/lessons/181900
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'프로그래머스코딩테스트연습풀이 > C언어' 카테고리의 다른 글
[프로그래머스/C언어] 뒤에서 5등까지 (0) | 2023.08.05 |
---|---|
[프로그래머스/C언어] 배열 만들기 3 (2) | 2023.08.05 |
[프로그래머스/C언어] 2의 영역 (0) | 2023.08.04 |
[프로그래머스/C언어] 리스트 자르기 (0) | 2023.08.04 |
[프로그래머스/C언어] 가까운 1 찾기 (0) | 2023.08.04 |