Coding Test/BaekJoon

[BaekJoon Java] OX퀴즈(8958)

momong'-' 2020. 12. 12. 20:39

www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net


  • 문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

  • 예제 입출력

  • 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package step.array;
 
import java.util.Scanner;
 
/**
     "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 
     문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
    "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
    OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
 */
public class OxQuiz {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int test = 0;
        test = sc.nextInt();
        
        for ( int i=0; i < test; i++ ) {
            String oxStr = "";
            oxStr = sc.next();
            
            int cnt = 0;
            int result = 0;
            
            for ( int j = 0; j < oxStr.length() ; j ++ ) {
                char o = 'O';
                char x = 'X';
                
                char oneStr = oxStr.charAt(j);
                
                if ( o == oneStr ) {
                    cnt ++;
                    result += cnt;
                }
                else if ( x == oneStr ) {
                    cnt = 0;
                }
            }
            System.out.println(result);
        }
    }
}
 
cs
  • 결과


  • 추가설명

Array 단계인데 Array로 안풀었다...

 

런타임 에러가 계속 나서 문제를 찾아봤더니 Sanner를 2개 쓰는게 문제가 되었다..

nextInt(), nextLine()를 같이 쓰면 문제 발생

그래서 Scanner를 새로 생성했더니 런타임 에러..

nextLine() -> next()로 변경해서 해결했다