티스토리 뷰

문제 풀러가기✍🏻

 

 


서론

문제를 고민고민하다가 시간이 없어서 다른 분의 풀이를 블로그에서 참고했다.

| 출처 | 성장하는 코더의 스토리

문제

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

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

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

 

시행착오(Trial&Error)

풀이(Solution)

기본 점수와 더해줄 점수를 변수로 선언하고, 연속 정답일 때의 점수를 어떻게 분기하여 반영해줄 지 고민하고 작성해야 한다.문자열로 입력받은 OX값에 대해 하나 하나 따져봐야 하기 때문에 문자열.charAt(idx);를 사용해야 한다.

 

코드

import java.io.*;

class Main {
    public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            int n = Integer.parseInt(br.readLine());
            String[] arr = new String[n];
            for(int i = 0; i < n; i++) {
                arr[i] = br.readLine();
                int score = 0; // 0점으로 초기화
                int add = 0;   // 정답일 경우 반영될 점수
                for(int j = 0; j < arr[i].length(); j++) {
                    if(arr[i].charAt(j)=='O') {
                        add++;
                        score += add;
                    } else {
                        add = 0;
                    }
                }
                bw.write(score + "\n");
            }
            br.close();
            bw.close();
        } catch(IOException e) {}
        
    }
}
댓글
공지사항