본문 바로가기
Computer Science/Algorithm

[JAVA] OX퀴즈

by soro.k 2022. 3. 8.

https://st-lab.tistory.com/50?category=833672 

 

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

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

st-lab.tistory.com

*해당 포스팅은 상단에 링크된 포스팅을 바탕으로 개인 공부 목적을 위해 작성되었으므로 자세한 내용은 위 링크를 확인해 주시기 바랍니다.


 

배열을 이용한 코드

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

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int test_case = Integer.parseInt(br.readLine());

        String arr[] = new String[test_case];

        StringBuilder sb = new StringBuilder();

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

        for (int i = 0; i < test_case; i++) {
            int cnt = 0;
            int sum = 0;

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

→ 사용자가 입력한 정수 값만큼 반복하며 OX문을 배열에 차례대로 넣어준다.

→ 문자열 배열에 담긴 OX문들을 차례대로 꺼내어 문자 하나 하나(arr[i].charAt[j])를 비교하며 계산한다.

 

 

getBytes()메소드와 for-each문을 이용한 코드

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

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int test_case = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();

        for(int i = 0; i < test_case; i++) {
            int cnt = 0;
            int sum = 0;

            for (byte value : br.readLine().getBytes()) {
                if(value == 'O') {
                    cnt++;
                    sum += cnt;
                } else {
                    cnt = 0;
                }
            }
            sb.append(sum + "\n");
        }
        br.close();
        System.out.println(sb);
    }
}

String.getBytes() 메소드

문자열을 Byte array로 변환해주는 메소드

 

위 메소드와 for-each문을 활용해서 문자 하나 하나를 if문으로 바로 검증한다.

 

 

 

 

 

'Computer Science > Algorithm' 카테고리의 다른 글

[JAVA] 한수  (0) 2022.03.09
[JAVA] 셀프 넘버  (0) 2022.03.09
[JAVA] 나머지  (0) 2022.03.08
[JAVA] 숫자의 개수  (0) 2022.03.06
[JAVA] 최소, 최대  (0) 2022.03.04