8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
내 코드
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] str = new String[sc.nextInt()];
for(int i = 0; i < str.length; i++) {
str[i] = sc.next();
}
sc.close();
for(int i = 0; i<str.length; i++) {
int cnt = 0;
int sum = 0;
for(int j = 0; j<str[i].length(); j++) {
if(str[i].charAt(j) == 'O') {
cnt++;
} else {
cnt = 0;
}
sum += cnt;
}
System.out.println(sum);
}
}
}
String 배열을 이용해서 케이스 마다 OX 문자열을 각 원소에 저장하고 그것을 첫 번째 for문에서 sum으로 케이스 별 총 합계를, cnt에서 O 의 연속된 값을 다루기 위해 선언과 초기화 해준다.
두 번째 for문에서는 String의 원소를 charAt()을 통해 문자로 변환하고 문자 'O' 와 비교하여 맞는 경우 cnt의 값을 증가시키고 아닌 경우 누적 값을 초기화 시키면서 해당 OX 문자열을 검사한다.
이렇게 cnt에 누적된 값은 String 배열의 인덱스를 검사하면서 sum에 누적하여 더해지고 for문이 종료되면 해당 케이스에 대한 결과 값을 출력하게 된다.
생각해야할 점
- O 가 연속되어 입력되는 경우, 점수를 누적해서 더하고, X가 나오면 이 누적된 값은 0으로 초기화 된다.
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 11720번/문자열] 숫자의 합 - Java (0) | 2021.03.16 |
---|---|
[백준 4344번/1차원 배열] 평균은 넘겠지 - Java (0) | 2021.03.15 |
[백준 1546번/1차원 배열] 평균 - Java (0) | 2021.03.15 |
[백준 3052번/1차원 배열] 나머지 - Java (0) | 2021.03.15 |
[백준 2577번/1차원 배열] 숫자의 개수 - Java (0) | 2021.03.15 |