문제
중학교 선생님인 구름이는 자신이 출제한 기말고사 문제를 채점하는 중 입니다.
문제마다 o
또는 x
표시가 되어있는데 점수를 매기는 방식이 특이합니다.
o
는 점수가 누적되는 방식으로 채점되는데 이전부터 자신을 포함한 연속된 o
의 개수 만큼의 점수로 채점이 됩니다.
예를 들면 oooxoo
가 있다면 순서대로 1 + 2 + 3 + 0 + 1 + 2 = 9
점이 되겠습니다.
학생이 푼 시험지에 정답, 오답 여부가 표시되어있을 때 총점을 구하는 프로그램을 작성하여 구름이를 도와주세요.
출처 - 구름
풀이
주어진 문자열 길이만큼 순회합니다.
i 번째 캐릭터
의 값을 검사합니다.o
라면 보너스 점수를 증가시키고 총점에 합산합니다.x
라면 보너스 점수를0
으로 초기화합니다.
public class Hello {
public static void main(String[] args) {
String str = "oooxoo";
int bonus = 0; // 보너스 점수를 누적 시킴
int sum = 0; // 총점
for (int i = 0; i < str.length(); i++) {
// case: 'o'
if (str.charAt(i) == 'o') {
bonus++; // 보너스 점수 증가
sum += bonus; // 총점 증가
}
// case: 'x'
else {
bonus = 0; // 보너스 점수 0으로 초기화
}
}
System.out.println(sum); // 결과 출력
}
}
> java Hello
9