
문제는 간단하다. O가 있으면 점수를 올려주면 된다. 주의할 점은 연속으로 O가 있으면 얻는 점수가 +1씩 높아진다.
연속으로 2개를 맞히면 2점을 얻고 연속 3개이면 3점 틀려서 X를 받으면 초기화 되어 다시 O를 받을 시 1점을 얻는 것이다.
아래는 필자의 코드이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
for(int tc=0; tc<t; tc++) { //테스트 케이스 수
bw.write(scoring(br.readLine()) + "\n"); //입력값을 scoring 메소드에 넣어준다
bw.flush();
}
}
public static int scoring(String ox) { // OX 문자열을 매개변수로 받는다
int sum = 0; //점수 합계를 받기 위한 변수
int count = 0; //연속으로 O가 있을 경우 1점씩 높여주기 위한 변수
for(int i=0; i<ox.length(); i++) {
if(ox.charAt(i)=='O') { //입력 받은 OX문자열에 O가 있을 경우
count++; //얻는 점수의 크기가 1씩 커진다
sum+=count; //그리고 그 커진 점수를 O이 있을 때마다 더해준다
}
else {
count=0; // 그 밖에(X일 경우) 얻는 점수의 크기가 초기화된다.
}
}
return sum; //최종 획득한 점수를 반환한다.
}
}
그렇게 긴 코드는 아니지만 점수를 구해주는 메소드를 만들어 프로그램을 짜보았다. 코드에 대한 설명은 주석처리된 부분으로 충분히 이해가 될 것이다.
반응형
'백준' 카테고리의 다른 글
| [자바] 백준 - 1065번(한수) (0) | 2021.04.05 |
|---|---|
| [JAVA] 백준 - 2751번(수 정렬하기2) (1) | 2021.04.03 |
| [JAVA] 백준 - 1157번(단어 공부) (0) | 2021.03.28 |
| [자바] 백준 - 1929번(소수 구하기) (1) | 2021.03.26 |
| 백준 - 4344번(평균은 넘겠지) (0) | 2021.03.25 |