관리 메뉴

LC Studio

백준 8958번 (JAVA) 본문

Java/백준 알고리즘

백준 8958번 (JAVA)

Leopard Cat 2022. 3. 14. 18:06

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

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

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

 

위와같은 문제였다.

배열에 값을 담아, 각 문자별로 비교하는 방식으로 작성했다.

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 N = Integer.parseInt(br.readLine());
        String array[] = new String[N];

        int discrimination = 0; //자릿값이 O인 경우에 값을 증가시킨다.
        int sum[] = new int[N]; //합

        for(int i=0;i<N;i++){ //처음 N의 개수만큼 반복한다.
            array[i] = br.readLine(); //다음줄을 읽어온다.
                for(int j=0;j<array[i].length();j++){ //읽어온 줄의 길이만큼 반복한다.
                    if(array[i].charAt(j) == 'O'){ //배열의 j번째값이 'O' 이라면...
                            ++discrimination; //discrimination 값을 증가시킨다.
                            sum[i] = sum[i]+discrimination; //기존의 sum의 값에 추가로 discrimination값을 더해준다
                    }
                    else{
                        discrimination = 0; //만약 값이 X라면 discrimination의 값을 0으로 초기화한다.
                    }
                }
            discrimination =0; //한줄의 반복이 끝나면 다음줄을 위해 discrimination의 값을 0으로 초기화시킨다.
        }
        br.close();

        for(int i=0;i<N;i++){
            System.out.println(sum[i]);
        }

        

    }
}

 처음에 charAt()라는 함수를 몰라, 한참동안 해결하지 못했다.

 

charAt이란 string 타입으로 받은 문자열을 char 타입으로 한 글자만 받는 함수라고 한다.
이걸 활용해 array배열에 담긴 "OXXXO"같은 문자열을 char 타입으로 한글자씩 받아와 'O'와 같은지 비교했다.

내 기준에서 처음으로 간단한 알고리즘으로 풀어서 뿌듯했다.ㅎㅎ 

 

반응형

'Java > 백준 알고리즘' 카테고리의 다른 글

백준 4673 셀프 넘버 JAVA  (0) 2022.03.15
백준 4344 평균은 넘겠지 (Java)  (0) 2022.03.15
백준 3052 나머지(JAVA)  (0) 2022.03.11
백준 2577번 숫자의 개수  (0) 2022.03.11
백준 1110번 더하기 사이클 (JAVA)  (0) 2022.03.10