길이가 짝수인 문자열 s가 있다고 가정합니다. 우리는 이 문자열을 같은 길이의 두 개의 다른 반으로 나누어야 합니다. 따라서 'a'는 전반부이고 'b'는 후반부입니다. 우리는 두 문자열이 같은 수의 모음(대문자 또는 소문자)을 가질 때 유사하다고 말합니다. 'b'와 'b'가 같은지 아닌지 확인해야 합니다.
따라서 입력이 s ="talent"와 같으면 두 개의 반쪽이 "tal"과 "ent"이므로 출력은 True가 되고, 모음과 자음이 두 개뿐이므로 비슷합니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
a :=s의 왼쪽 절반
-
b :=s의 오른쪽 절반
-
count1 :=0, count2 :=0
-
각 c에 대해 수행
-
c가 모음이면
-
count1 :=count1 + 1
-
-
-
b의 각 c에 대해
-
c가 모음이면
-
count2 :=count2 + 1
-
-
-
count1이 count2와 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(s): vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] a = s[:len(s)//2] b = s[len(s)//2:] count1 = 0 count2 = 0 for c in a: if c in vowels: count1 += 1 for c in b: if c in vowels: count2 += 1 return count1 == count2 s = "talent" print(solve(s))
입력
"talent"
출력
True