문자열로 입력을 받는다고 하자.
문자열의 첫 문자부터 시작하여 O와 X 탐색한다.
첫 번째 O를 만나면 1을 더하고, 연속적으로 O를 만나면 연속되는 횟수만큼 점수가 더해진다.
연속으로 두 번째 O를 만날 경우 2점을 더한다.
연속으로 세 번째 O를 만날 경우 3점을 더한다.
그러다 X를 만나면 O의 연속이 이어질 수 없게 된다.
따라서 O를 만나도 첫 번째 O로 인식해 1점을 더한다.
이 과정을 반복하여 총점수를 구하는 문제이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int TC = Integer.parseInt(br.readLine());
for(int i=0; i<TC; i++) { // 전체 테스트 케이스 횟수
String str = br.readLine();
int cnt=0, accumulate=0;
for(int j=0; j<str.length(); j++) { // 문자열 길이만큼 반복
if(str.charAt(j)=='O') { // O일 경우
accumulate++;
}
else // X일 경우
{
accumulate = 0; // 누적값 초기화
}
cnt += accumulate;
}
System.out.println(cnt);
}
}
}
https://www.acmicpc.net/problem/8958
'CODING > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 2851번 슈퍼 마리오 (0) | 2022.01.24 |
---|---|
[BAEKJOON] 2577번 숫자의 개수 (0) | 2022.01.24 |
[BAEKJOON] 1152번 단어의 개수 (0) | 2022.01.24 |
[BAEKJOON] 15596번 정수 N개의 합 (0) | 2022.01.24 |
[BAEKJOON] 1009번 분산 처리 (0) | 2022.01.24 |
댓글