- string 클래스 사용
#include<iostream>
#include<string>
int main() {
int T;
std::string str;
std::cin >> T;
for (int i = 0; i < T; i++) {
std::cin >> str;
int sum=0, cnt=0;
for (std::size_t j = 0; j < str.length(); j++) {
if (str[j] == 'O') {
cnt++;
}
else {
cnt = 0;
}
sum += cnt;
}
std::cout << sum << "\n";
}
}
- string 함수 사용시, scanf로 입력받기보다는 std::cin으로 입력받도록 함
- 배열 안의 인덱스로 사용할 타입은 int 타입도 상관없지만 크기가 0보다 적은 배열은 무의미하므로 std::size_t타입으로 선언해주는 것이 더 좋음
- length()는 string으로 정의된 문자열의 길이를 의미함
ex) 문자열 str인 OOXXOXXOOO 의 size()는 str.length() 라고 작성, 크기는 10
ex) T가 2이고, 문자열이 아래와 같다면,
OOXXOXXOOO
OOXXOOXXOO
i=0, str=10
j=0 | O | cnt=1 |
j=1 | O | cnt=2 |
j=2 | X | cnt=0 |
j=3 | X | cnt=0 |
j=4 | O | cnt=1 |
j=5 | X | cnt=0 |
j=6 | X | cnt=0 |
j=7 | O | cnt=1 |
j=8 | O | cnt=2 |
j=9 | O | cnt=3 |
sum=1+2+0+0+1+0+0+1+2+3 = 10
i=1, str=10
j=0 | O | cnt=1 |
j=1 | O | cnt=2 |
j=2 | X | cnt=0 |
j=3 | X | cnt=0 |
j=4 | O | cnt=1 |
j=5 | O | cnt=2 |
j=6 | X | cnt=0 |
j=7 | X | cnt=0 |
j=8 | O | cnt=1 |
j=9 | O | cnt=2 |
sum=1+2+0+0+1+2+0+0+1+2 = 9
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #15596_정수 N개의 합_c++ (0) | 2021.10.25 |
---|---|
baekjoon #4344_평균은 넘겠지_c+ (0) | 2021.10.25 |
baekjoon #2577_숫자의 개수_c++ (0) | 2021.10.24 |
baekjoon #10818_최소, 최대_c++ (0) | 2021.10.24 |
baekjoon #10951_A+B - 4_c++ (0) | 2021.10.24 |