https://www.acmicpc.net/problem/8958
[ 문제 ]
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다.
문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
[ 입력 ]
첫째 줄에 테스트 케이스의 개수가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다.
문자열은 O와 X만으로 이루어져 있다.
[ 출력 ]
각 테스트 케이스마다 점수를 출력한다.
[ 입출력 예시 ]
예제 입력 | 예제 출력 |
---|---|
5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX OOOOOOOOOO OOOOXOOOOXOOOOX | 10 9 7 55 30 |
- 테스트 케이스를 담을 변수(T)를 선언하여 몇 번 실행할지에 대한 값을 입력받는다.
한 정답지에 대한 전체 점수를 담을 변수(total)와 문제의 점수를 담을 변수(score)를 선언한다.
- 테스트 케이스(T)만큼 반복하면서 한 정답지에 대한 전체 점수와 문제의 점수를 나타내는 변수를 0으로 초기화한다.
- 정답지를 하나씩 확인하면서 맞았으면 score값을 증가(++)시켜 total값에 누적시킨다.
틀렸다면, 점수를 다시 0으로 초기화하여 연속된 점수 다시 0으로 초기화시킨다.
- 한 정답지를 다 확인했으면 그 정답지의 점수(total)을 출력하고 2번으로 테스트 케이스(T)만큼 반복한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int T = Integer.parseInt(st.nextToken());
int total;
int score;
for(int i=0; i<T; i++) {
st = new StringTokenizer(br.readLine());
total = 0;
score = 0;
char[] answer = st.nextToken().toCharArray();
for(int j=0; j<answer.length; j++) {
if(answer[j] == 'O') {
score++;
total += score;
}
else {
score = 0;
}
}
System.out.println(total);
}
}
}