-
Notifications
You must be signed in to change notification settings - Fork 0
/
[PGS_lv0]babbling.c
58 lines (48 loc) · 1.54 KB
/
[PGS_lv0]babbling.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// https://school.programmers.co.kr/learn/courses/30/lessons/120956
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
const char* kSpeakableWords[] = { "aya", "ye", "woo", "ma" };
bool IsSpeakable(char* word)
{
int wOffset = 0;
int wLen = strlen(word);
while (true)
{
bool foundAtLeastOneWordMatched = false;
int compCnt = sizeof(kSpeakableWords) / sizeof(kSpeakableWords[0]);
for (int swi = 0; swi < compCnt; ++swi)
{
int swLen = strlen(kSpeakableWords[swi]);
if (wLen < swLen)
continue;
bool matched = true;
for (int wi = 0; wi < swLen; ++wi)
{
if (word[wi + wOffset] != kSpeakableWords[swi][wi])
{
matched = false;
break;
}
}
if (matched == false)
continue;
foundAtLeastOneWordMatched = true;
wOffset += swLen;
}
if (foundAtLeastOneWordMatched == false)
break;
}
return wOffset == wLen;
}
// babbling_len은 배열 babbling의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
int solution(const char* babbling[], size_t babbling_len) {
int answer = 0;
for (int i = 0; i < babbling_len; i++)
{
if (IsSpeakable(babbling[i]))
++answer;
}
return answer;
}