본문 바로가기

TIL/Algorithm

Java 백준 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만으로 이루어져 있다.

출력

각 테스트 케이스마다 점수를 출력한다.

예제 입력 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