반응형
▶ 문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181878#
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
▶ 풀이
#include <stdio.h>
#include <string.h>
int solution(const char* myString, const char* pat) {
if(strlen(myString) < strlen(pat)) return 0;
int idx = 0;
for(int i = 0; i < strlen(myString); i++) {
if(myString[i] == pat[idx] || abs(myString[i] - pat[idx]) == 32) idx++;
else idx = 0;
if(idx == strlen(pat)) return 1;
}
return 0;
}
⭐ 풀이 노트
📌 line 5 : pat이 길 경우 어차피 성립 안 되기 때문에 바로 return 0;
📌 line 10 : ASCII 코드 기준 'A'와 'a' 즉, 대문자와 소문자의 값 차이는 32 인 것을 활용
toupper(), tolower()로 사용 가능 (함수 최대한 안 쓰고 싶어서 위와 같이 작성해봄)
💡 가독성을 요할 경우 toupper()나 tolower()를 쓰는게 나을 수도 있음 (ctype.h 헤더필요)
⭐ 개선할 수 있는 부분
📌 line 9 : strlen()은 문자열 길이를 매번 계산하므로 불필요하게 반복 호출됨
변수에 미리 저장하는 것이 좋음
ex) int len = strlen(myString);
for(int i = 0; i < len; i++) ...
strcasestr() 함수 |
문자열 haystack 안에 대소문자 구분 없이 문자열 needle이 포함되어 있는지 찾는 함수
⭐ 함수 원형
char *strcasestr(const char *haystack, const char *needle);
⭐ 반환 값
포함 : needle이 시작되는 주소 반환
ex) "Hello World", "lo" => "lo World" 반환
미포함 : NULL 반환
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Lv.1-Python] 3문제 풀이(예산, 이상한 문자 만들기, 삼총사) (0) | 2025.02.13 |
---|---|
[기초 Lv.0-Python] 코딩 기초 트레이닝 Day4 - 연산, 조건문 (0) | 2025.02.10 |
[기초 Lv.0-Python] 코딩 기초 트레이닝 Day3 - 연산 (0) | 2025.02.08 |
[기초 Lv.0-Python] 코딩 기초 트레이닝 Day2 - 출력, 연산 (0) | 2025.02.07 |
[기초 Lv.0-Python] 코딩 기초 트레이닝 Day1 - 출력 (0) | 2025.02.06 |
댓글