문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
예제 입력 1
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
예제 출력 1
10
9
7
55
30
BufferedReader로 입력값을 받는데,
첫째 줄에 입력받는 테스트 케이스만큼 String배열을 형성하고
배열 안에 입력값들을 담는다
그리고 for 반복문을 이용하여 배열 sarr의 길이만큼 반복문을 도는데
여기서 O의 개수가 중복되면 O의 value(값)이 증가되고
X를 만나면 초기화 되는 것을 고려해야 했다
총합계를 sum으로 지정하여 변수를 선언하고
몇 번 O가 중첩되었는지를 알기 위해 cnt 변수도 같이 선언하였다
그리고 이중 반복문을 돌면서
j가 i를 따라가는 형식으로 구성하였고
If조건문을 이용하여 j인덱스가 가리킨 값이 O일 때는 cnt를 ++해주고
X를 만났을 때 즉 else일 때는 0으로 초기화 해주었다
그리고 최종 합계 sum에 cnt를 누적해주었다
마지막으로 콘솔에 누적 값 sum을 출력하였다
'TIL > Algorithm' 카테고리의 다른 글
Java 백준 4673번 문제 (0) | 2021.09.29 |
---|---|
Java 백준 4344번 문제 (0) | 2021.09.28 |
Java 백준 1546번 문제 (0) | 2021.09.26 |
Java 백준 3052번 문제 (0) | 2021.09.25 |
Java 백준 2577번 문제 (0) | 2021.09.24 |