두 개의 문자와 b로 구성된 문자열이 주어졌다고 가정해 보겠습니다. 문자열이 anbn 형식인지 또는 n개의 a와 n개의 b를 포함하는지 알아내야 합니다. true이면 1을 반환하고 그렇지 않으면 0을 반환합니다.
따라서 입력이 "aaaaaaaaaaabbbbbbbbbbbbb"와 같으면 출력은 true가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 길이 :=input_string의 길이
- 초기화 i의 경우:=0, i <길이일 때 업데이트(i 1만큼 증가), &minus
- 수행
- input_string[i]이 'a'와 같지 않으면 -
- 루프에서 빠져나오기
- input_string[i]이 'a'와 같지 않으면 -
- i * 2가 길이와 같지 않으면 -
- 거짓 반환
- j 초기화의 경우 :=i, j <길이일 때 업데이트(j를 1만큼 증가), −
- input_string[j]가 'b'와 같지 않으면 -
- 거짓 반환
- input_string[j]가 'b'와 같지 않으면 -
- 참을 반환
예시(C++)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; bool solve(string input_string) { int length = input_string.length(); int i; for (i = 0; i < length; i++) if (input_string[i] != 'a') break; if (i * 2 != length) return false; for (int j = i; j < length; j++) if (input_string[j] != 'b') return false; return true; } int main() { string input_string = "aaaaaaaaaaaabbbbbbbbbbbb"; cout << solve(input_string)<< endl; return 0; }
입력
"aaaaaaaaaaaabbbbbbbbbbbb"
출력
1