BOJ/String
[BOJ] 8958 OX 퀴즈
J_Jayce
2021. 2. 16. 15:16
문제
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
풀이
개선 전 코드)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static StringBuilder sb = new StringBuilder();
public static int calc_point(String result) {
int len = result.length(), sum=0;
int[] cnt = new int[len];
if(result.charAt(0)=='O') {
cnt[0]=1;
sum+=cnt[0];
}
for(int i=1;i<len;i++) {
if(result.charAt(i)!='X') {
if(result.charAt(i-1)!='X') {
cnt[i]=cnt[i-1]+1;
sum+=cnt[i];
}
else {
cnt[i] = 1;
sum+=cnt[i];
}
}
}
return sum;
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] result = new String[N];
//테스트 결과 입력
for(int i=0;i<N;i++) {
result[i] = new String(br.readLine());
}
//계산
for(int i=0;i<N;i++)
System.out.println(calc_point(result[i]));
}
}
개선 후 코드)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static StringBuilder sb = new StringBuilder();
public static int calc_point(String result) {
char[] arr = result.toCharArray();
int len = result.length(), sum=0;
int cnt = 1;
for(int i=0;i<len;i++) {
if(arr[i]=='O')
sum+=cnt++;
else
cnt=1;
}
return sum;
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] result = new String[N];
//테스트 결과 입력
for(int i=0;i<N;i++) {
result[i] = new String(br.readLine());
}
//계산
for(int i=0;i<N;i++)
System.out.println(calc_point(result[i]));
}
}