문제
"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
코드
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
for(int i=0;i<num;i++){
String total = br.readLine();
int score = 0;
int curr = 0;
for(int j=0;j<total.length();j++){
if('O' == total.charAt(j)){
curr ++;
score += curr;
}else{
curr = 0;
}
}
System.out.println(score);
}
}
}
풀이
int num = Integer.parseInt(br.readLine());
입력받은 첫번째 값을 가져옴 (테스트 케이스의 갯수)
for(int i=0;i<num;i++){
String total = br.readLine();
int score = 0;
int curr = 0;
테스트 케이스의 갯수대로 readLined()을 해서 해당 테스트 케이스를 total 변수에 대입.
전체 점수를 알기위해 socre 변수를 0으로 초기화하여 선언
'O'의 연속된 갯수를 알기위해 curr 변수를 0으로 초기화하여 선언
for(int j=0;j<total.length();j++){
if('O' == total.charAt(j)){
curr ++;
score += curr;
}else{
curr = 0;
}
}
total변수의 문자요소 각각에 접근하여 'O'문자를 만나면 curr변수의 값을 한개씩 올려서 현재 요소에 도달했을때 연속된 'O'의 갯수가 몇개인지 구한다.
그뒤 socre변수에 해당 값을 더함으로써 전체 점수를 구한다.
만약 'O'를 만나지 않는다면 다음에 만날 문자를 위해 curr을 0으로 초기화 한다.
결과
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준1157/JAVA] 단어 공부 (0) | 2021.07.14 |
---|---|
[백준10809/JAVA] 알파벳 찾기 (0) | 2021.07.14 |
[백준3052/JAVA] 나머지 (0) | 2021.07.09 |
[백준2920/JAVA] 음계 (0) | 2021.07.09 |
[백준2908/JAVA] 상수 (0) | 2021.07.09 |