프로그래머스 0레벨 '접두사인지 확인하기' 문제이다. 이 문제를 풀 때 내가 생각한 조건들은,
1. is_prefix의 길이가 my_string 보다 길다면 접두사가 될 수 없다.
2. is_prefix[i] 와 my_string[i] 가 같지 않다면 접두사가 될 수 없다.
이다.
따라서 코드를,
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* my_string, const char* is_prefix) {
int answer = 1;
int i = 0;
int l = 0;
for(; is_prefix[i]; i++){
if(is_prefix[i] != my_string[i]) answer = 0; // 2번 조건
}
while(my_string[l]){
l++;
}
if(i > l) answer = 0; // 1번 조건
return answer;
}
이렇게 작성했었는데, 문자열의 길이를 출력할 수 있는 strlen함수를 배우고
while문을 통해 문자열의 길이를 굳이 구하지 않아도 된다는 것을 깨달았다.
- 문자열을 다루는 C 내장 함수 strlen, strcpy, strcat
strlen(문자열이 저장된 변수 이름): 문자열의 길이를 구하는 문자열 표준 함수
strcpy(복사해서 저장할 변수 이름, 복사할 기존 변수 이름): 문자열을 복사할 때 쓰는 함수
strcat(기존 문자열이 저장된 변수 이름, 새로 덧붙일 문자열): 문자열 뒤에 다른 문자열을 덧붙이는 함수
사용하려면 #include 전처리기로 string.h파일을 소스 파일 안에 포함시켜야 한다.
해서 다시 문제를 풀어보면
이렇게 코드길이를 줄일 수 있었다
그런데 string.h 파일을 포함시키지 않았는데도 작동되는게 조금 께름칙하다. 왜지..
나중에 찾아봐야겠다. 일단은 구글링을 해도 잘 모르겠다
++
gpt야 고마워..
아무튼 아주 조금이지만 메모리도 덜 잡아먹는 걸 보니(아주 미미하지만..) 변수가 적은 쪽이 가독성도 좋고 괜찮은 듯 하다
'개념 > C' 카테고리의 다른 글
프로그래머스 중앙값 구하기(버블 정렬) (0) | 2024.10.22 |
---|---|
Printf 출력 키워드와 형식 (0) | 2024.10.21 |
C언어 (8) | 2024.10.21 |