#include <stdio.h>
typedef int bool;
#define true 1
#define false 0
int str_len(char* arr) {
int i=0;
while (arr[i] != '\0') {
if (arr[i] == '\0'){
return i;
}
i++;
}
return 0;
}
int ends_with(char* a, char* b) {
int i=0;
if (str_len(a) < str_len(b)) {
return 0;
}
for (i=0; i<str_len(b);i++) {
if (a[i + str_len(a) - str_len(b)] != b[i]){
break;
}
i++;
}
if (i == str_len(b)) return 1;
else return 0;
}
int main(void) {
bool rs;
rs = ends_with("abc", "bc");
printf("rs : %d\n", rs); // 출력 rs : 1
rs = ends_with("kbs", "kb");
printf("rs : %d\n", rs); // 출력 rs : 0
rs = ends_with("kbs", "bs");
printf("rs : %d\n", rs); // 출력 rs : 1
rs = ends_with("mbc", "mc");
printf("rs : %d\n", rs); // 출력 rs : 0
return 0;
}
C
복사
#include <stdio.h>
#define true 1
int str_len(char* a){
for (int i=0; true; i++){
if(a[i] == '\0'){
return i;
}
}
}
int str_part_equals(char* str, int start, int end, char* pattern) {
if (str_len(str) < str_len(pattern)){
return 0;
}
if (str_len(pattern) < (end - start)) {
return 0;
}
int j=0;
for (int i=start; i < end; i++){
if (pattern[j++] != str[i]){
return 0;
}
}
return 1;
}
int main(void) {
printf("str_part_equals(\"abcd\", 0, 2, \"ab\") : %d\n", str_part_equals("abcd", 0, 2, "ab"));
// 출력 => str_equals("abcd", 0, 2, "ab") : 1
printf("str_part_equals(\"abcd\", 1, 2, \"b\") : %d\n", str_part_equals("abcd", 1, 2, "b"));
// 출력 => str_equals("abcd", 1, 2, "b") : 1
printf("str_part_equals(\"abcd\", 2, 2, \"\") : %d\n", str_part_equals("abcd", 2, 2, ""));
// 출력 => str_equals("abcd", 2, 2, "") : 1
printf("str_part_equals(\"abcd\", 2, 4, \"cb\") : %d\n", str_part_equals("abcd", 2, 4, "cb"));
// 출력 => str_equals("abcd", 2, 4, "cb") : 0
printf("str_part_equals(\"abcd\", 2, 4, \"cd\") : %d\n", str_part_equals("abcd", 2, 4, "cd"));
// 출력 => str_equals("abcd", 2, 4, "cb") : 1
return 0;
}
C
복사
// 문제 : 문장에서 특정 문장의 위치를 반환하는 함수를 만들어주세요.(get_index_of_str)
#include <stdio.h>
#define true 1
int str_len(char* a){
for(int i=0;true;i++){
if(a[i] == '\0'){
return i;
}
}
}
int get_index_of_str(char* str, char* pattern) {
int i = 0;
for(i=0; true; i++){
if(str[i] == pattern[0]){
break;
}
}
if(str_len(str) - i < str_len(pattern)){
return -1;
}
for (int j=0; j<str_len(pattern); j++) {
if(str[i + j] != pattern[j]){
return -1;
}
}
return i;
}
int main(void) {
int index;
index = get_index_of_str("abc", "b");
printf("index : %d\n", index);
// 출력 => index : 1
index = get_index_of_str("test", "es");
printf("index : %d\n", index);
// 출력 => index : 1
index = get_index_of_str("abcd", "bd");
printf("index : %d\n", index);
// 출력 => index : -1
return 0;
}
C
복사