ezhoon

[백준] 8958_OX퀴즈_Java 본문

[Java] 백준 문제풀이/1차원 배열

[백준] 8958_OX퀴즈_Java

ezhoon 2022. 1. 8. 23:30

백준 8958

 

[백준] 8958번 : OX퀴즈 - JAVA [자바]

https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속..

st-lab.tistory.com

 

⚠️주의사항

  • 배열 안에 String 값들을 어떻게 구분해서 체크해야 하는지
  • 연속된 O가 있으면 그 값은 전 값의 + 1

문제풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Arrange_8958 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringBuilder sb = new StringBuilder();

        int N = Integer.parseInt(br.readLine());

        String arr[] = new String[N];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = br.readLine();
        }

        for (int i = 0; i < arr.length; i++) {
            int sum = 0;
            int cnt = 0;

            for (int j = 0; j < arr[i].length(); j++) {
                if (arr[i].charAt(j) == 'O') {
                    cnt++;
                }else{
                    cnt=0;
                }
                sum = sum + cnt;
            }
            sb.append(sum).append("\n");
        }
        System.out.println(sb);
    }
}

첫 번째 for문은 배열에 OX 입력받는 것이다.

두 번째 for문을 설명해보겠습니다.

 

  • int sum // 점수
  • int cnt // 연속된 O의 점수
    • 두 번째 for문에서 주의할 점이 있습니다 그것은 j를 어디까지 반복할 것인가입니다. arr.length로 해버리면 5 값이 들어가는데 우리가 원하는 건 arr [i]의 길이 이므로 arr [i]. length()로 해줘야 합니다.
    • 그 후 chartAt을 사용합니다. arr[i]에 들어가있는 문자에서 charAt(j) arr[i]에서 j번째 값을 가져옵니다. 그 후 비교하고서 cnt를 증가시키거나 0으로 반환 시키면 됩니다.
Comments