- OX 퀴즈의 결과를 일차원 배열로 입력받아 점수를 계산하는 문제
https://www.acmicpc.net/problem/8958
1. 문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
2. 문제 접근
- 테스트의 개수를 입력 받는다.
- 테스트의 개수만큼 반복문을 통해 OX 퀴즈의 결과를 받는다.
- 2가지 경우로 문제를 풀어보자.
1) X를 기준으로 split하여 나눈 다음 O 문자열의 길이에 따라서 점수를 추가한다.
2) 받은 OX 퀴즈의 결과를 문자 하나씩 접근하여 O일 경우 점수를 추가하고 추가하는 점수를 1씩 더한다. X일 경우 추가하는 점수를 다시 1로 변경한다.
3. 코드
1) 1번 방법
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int size = Integer.parseInt(br.readLine());
String str[];
StringBuilder sb = new StringBuilder();
for(int i=0 ;i<size;i++) {
str = br.readLine().split("X");
int sum =0;
for(int j=0;j<str.length;j++) {
sum+=sum(str[j].length());
}
sb.append(sum).append('\n');
}
System.out.print(sb);
}
static int sum(int n) {
int sum=0;
for(int i=1;i<=n;i++) {
sum+=i;
}
return sum;
}
}
2) 2번 방법
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
String input;
StringBuilder sb = new StringBuilder();
for(int i=0;i<T;i++) {
int score = 1;
int result = 0;
input = br.readLine();
for(int j=0;j<input.length();j++) {
if(input.charAt(j)=='O') {
result+=score;
score++;
}
else {
score=1;
}
}
sb.append(result).append("\n");
}
System.out.print(sb);
}
}
'백준 > JAVA' 카테고리의 다른 글
[백준/JAVA] 단계별로 풀어보기(5단계) 코드 모음 (0) | 2023.01.18 |
---|---|
[백준/JAVA] 단계별로 풀어보기(4단계) 코드 모음 (0) | 2023.01.18 |
[백준/JAVA] 2577번 숫자의 개수 (0) | 2023.01.18 |
[백준/JAVA] 10951번 A+B-4 (0) | 2023.01.17 |
[백준/JAVA] 단계별로 풀어보기(3단계) 코드 모음 (0) | 2023.01.17 |