문제는 간단하다. 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;        //최종 획득한 점수를 반환한다.
	}
	
}

 

그렇게 긴 코드는 아니지만 점수를 구해주는 메소드를 만들어 프로그램을 짜보았다. 코드에 대한 설명은 주석처리된 부분으로 충분히 이해가 될 것이다.

반응형

+ Recent posts