728x90
요즘 백준을 풀다가 프로그래머스 문제 풀기에 돌입했다.
레벨0짜리부터 올 클리어 하려고 했는데 50문제쯤 풀었나 생각보다 복잡해서 당황했다.
반례를 찾을 수 없으니 답답하다..
[문제 설명]
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
[제한사항]
my_string은 소문자와 공백으로 이루어져 있습니다.1 ≤ my_string의 길이 ≤ 1,000
입출력 예
[my_string result ]
["bus" "bs" ]
["nice to meet you" "nc t mt y"]
모음을 제거하되 빈칸도 냅둬야 하는 상황이다.
[소스코드]
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char* solution(const char* my_string) {
char* answer = (char*)calloc(1,sizeof(char));
int k=0;
for(int i=0;i<strlen(my_string);i++){
if(my_string[i]=='a'||my_string[i]=='e'||my_string[i]=='u'||my_string[i]=='o'||my_string[i]=='i'){
answer[k]=my_string[i+1];
}
else {
answer[k]=my_string[i];
k++;
}
}
return answer;
}
기본 헤더에 string.h 를 사용하여 strlen 함수를 사용했고,
프로그래머스가 동적 할당 메모리를 사용해야되는데 이건 아직도 어렵다.. malloc 함수로 하면 쓰레기값이 출력 되는 경우가 많아서 calloc으로 해결했다...
문제로 돌아와서,
만약 my_string 배열에서 자음이 들어온다면
answer[k] 배열에 넣어주고 k+1 을 해준다.
만약 모음이 나오면 그다음배열 값을 넣어주고,
다시 비교한다. 포인트는 모음일때 k를 그대로 고정시켜
다음 값을 계속 넣어줌으로써 모음을 삭제해 주는 형식이다.
[후기]
백준은 처음부터 내가 다 손수 쓰는것이지만,
프로그래머스는 scanf도없고 반례도 찾기 힘들어서
상당히 난감하다. 더 열심히 해봐야지뭐..
'c언어' 카테고리의 다른 글
[C언어/프로그래머스 레벨1]-삼총사 (0) | 2022.11.10 |
---|---|
[C언어 프로그래머스 레벨0]-진료 순서 정하기 (0) | 2022.10.31 |
[C언어/프로그래머스 레벨0]-가위 바위 보 (0) | 2022.10.30 |
[C/프로그래머스 레벨0]-숨어있는 숫자의 덧셈(1) (0) | 2022.10.29 |