본문 바로가기
코딩테스트/programming_C++

baekjoon #8958_OX퀴즈_c++

by prometedor 2021. 10. 25.
  • 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