본문 바로가기
Algorithm/Beakjoon

[Java] baekjoon 8958 : OX퀴즈 / 1차원 배열

by Amy97 2021. 8. 27.
728x90

문제 


https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net

해결 


OX퀴즈 결과의 점수를 계산하려면 점수를 매기는 패턴부터 파악해야 한다.

ex) OOXXOXXOOO :  1+2+0+0+1+0+0+1+2+3 = 10점

O : 문제를 맞음

X : 문제를 틀림

문제를 연속으로 맞을 시 점수가 1점씩 증가하며 축적된다.

문제를 틀릴 시 점수를 받지 못하고 (0점) 다음에 문제를 연속으로 맞히더라도 다시 1점부터 증가한다.

 

이중반복문(nested loop)을 작성하고, index로 주어진 값에 해당하는 문자를 리턴하는 charAt(index) 메서드를 활용해 문제를 해결하였다.

구현 


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
import java.util.*;
 
public class Main {
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
 
        int t = sc.nextInt(); // 테스트 케이스의 개수 입력받음
        String[] ox = new String[t]; // 테스트 케이스의 수만큼 OX퀴즈 결과를 저장할 배열 선언 
        for (int i = 0; i < t; i++) {
            ox[i] = sc.next(); // OX퀴즈 결과(O와 X만으로 이루어진 문자열)을 배열에 입력받음
        }
        int[] res = new int[ox.length]; // OX퀴즈 결과의 수만큼 각각의 총점을 저장할 배열 선언
        for (int i = 0; i < ox.length; i++) { // OX퀴즈 결과의 수만큼 for문 실행
            int o = 0// 문자열이 'O'일 때 (퀴즈를 맞혔을 때) 증가하는 점수를 저장할 변수를 선언하고 0으로 초기화
            for (int j = 0; j < ox[i].length(); j++) { // 각각의 OX퀴즈 결과만큼 for문 실행
                if (ox[i].charAt(j) == 'O') { // i번째 OX퀴즈 결과의 j번째 문자가 'O'이면 (문제를 맞혔으면)
                    o++// 점수가 증가한다 (연속으로 문자열이 'O'이면 1점씩 계속 증가한다)
                    res[i] += o; // 증가한 점수를 OX퀴즈 총점 배열에 저장 
                } else if (ox[i].charAt(j) == 'X') { // i번째 OX퀴즈 결과의 j번째 문자열이 'X'이면 (문제를 틀렸으면)
                    o = 0// 점수를 0으로 초기화 (문제를 틀린 다음 연속으로 문제를 맞히면 다시 1점부터 점수가 증가한다)
                }
            }
            System.out.println(res[i]);
        }
 
    }
}
cs

결과 


728x90

댓글