본문 바로가기
코딩공부/백준 (java)

[백준 8958] OX퀴즈 (java)

by CodingKwon 2021. 7. 5.

문제 링크

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 

나의 코드 (java)

import java.util.Scanner;

public class Main {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);

        // 입력 받을 개수
        int n = sc.nextInt();
        // nextInt의 개행문자 제거
        sc.nextLine();
        for (int i=0; i<n; i++){
            // 각 줄의 입력을 받음
            String s = sc.nextLine();
            // 받은 입력을 각 문자로 분해하여 배열에 추가
            char arr[] = s.toCharArray();
            // 연속된 'O'를 받을 때 가산점을 줄 변수
            int cnt = 0;
            // 결과 값을 저장할 변수
            int result = 0;
            for (int j=0; j<s.length(); j++){
                // 'O'이면 가산점 카운트를 하나 증가시키고 result에 값을 더함
                if (arr[j] == 'O'){
                    cnt++;
                    result += cnt;
                } else {
                    // 'X'가 나왔을 때 가산점 카운트 초기화
                    cnt = 0;
                }
            }
            // 결과 출력
            System.out.println(result);
        }
    }
}

 

입력을 nextLine()으로 받아서 char arr[] = s.toCharArray();를 통해서 문자열을 문자 각각으로 배열에 받습니다.

가산점을 계산할 변수 cnt를 설정하고 for문을 통해서 arr[]에 들어있는 첫 번째 원소부터 차례대로 'O'인지 검증합니다. 맞다면 cnt++를 통해서 가산점을 증가시키고 'O'가 아니라면 가산점을 0으로 초기화시킵니다.

for문을 통해 배열을 처음부터 끝까지 검증하면 결과를 출력합니다.

 

댓글