백준 8958번 OX퀴즈 - Java

728x90

www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net


import java.util.*;
import java.io.*;
class Main {  
  public static void main(String args[]) throws IOException{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();
    int num = Integer.parseInt(br.readLine());
    String ox[] = new String[num];
    for(int i=0; i<num; i++){
      ox[i] = br.readLine();
      int cnt = 0; 
      int tmpcnt = 0;
      for(int j=0; j<ox[i].length(); j++){
        if(ox[i].charAt(j)=='X'){
          tmpcnt = 0;
        }else{
          tmpcnt += 1;
          cnt = cnt + tmpcnt;
        }
      }
      sb.append(cnt+"\n");
    }
    br.close();
    System.out.println(sb);
  } 
}

읽기 - BufferedReader 

출력 - StringBuilder 

 

첫 번째 라인의 숫자를 읽어서 num 변수에 넣는다.

 

String형 배열을 num 크기만큼 선언한다.

 

num만큼 반복하면서 라인을 읽어 배열 ox에 저장한다.

 

출력할 총 점수(cnt) 와 연속된 'O' 일 경우 +될 점수(tmpcnt)를 초기화 한다.

 

ox 배열 안에 string의 길이만큼 반복하며 

 

문자열에 문자 하나씩 'X' 인지 검사한다.

 

'X'이면 tmpcnt를 0으로 만들어주고, 아니면 tmpcnt를 더해준다.

 

결과를 StringBuilder를 이용해 저장하고 마지막에 출력한다.

반응형