1. 문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
2. 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String test;
int score=0;int cnt=0;
for(int i=0;i<n;i++){
test=sc.next();
char[] testArr = test.toCharArray();
for(int j=0;j<testArr.length;j++) {
if(testArr[j]=='O') {
cnt++;
}else cnt=0;
score=cnt+score;
}
System.out.println(score);
score=0; cnt=0;
}
}
}
3. 풀이
cnt와 score 변수를 이용하여 해당 점수를 출력할 것이다.
n은 테스트의 수 이므로, 가장 바깥 반복문에서 사용한다. 각 테스트는 안쪽 반복문에서 사용해야하고, 0부터 배열의 크기만큼 반복문을 돈다.
각 테스트의 점수를 계산하기 전에, test변수에 원하는 "OXOX..."를 문자열로 입력받은 후, "toCharArray()"메소드를 통해 문자열을 char형 배열로 변환한다.
cnt는 배열의 각 원소를 지날때마다 score에 더하는 점수로, O가 연속으로 나오면 cnt는 1씩 증가하고, X가 나오면 0으로 초기화 된다. 안쪽반복문을 끝낸 후에(한 테스트 케이스 점수를 계산한 후에)는 score과 cnt 모두 0으로 초기화 해야한다.
4. 링크
'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글
[JAVA] 백준 4673번 : 셀프넘버 (0) | 2021.01.22 |
---|---|
[JAVA] 백준 4544번 : 평균은 넘겠지 (1) | 2021.01.17 |
[JAVA] 백준 1546번 : 평균 (0) | 2020.09.18 |
[JAVA] 백준 3053번 : 나머지 (0) | 2020.09.18 |
[JAVA] 백준 2577번 : 숫자의 개수 (0) | 2020.08.10 |