https://www.acmicpc.net/problem/17389
문제
OX표의 점수는 다음과 같이 계산된다.
- OX표에 N개의 문제들이 있을 때, 1번 문제, 2번 문제, ..., N번 문제 순으로 채점된다.
- 문제는 뒤로 갈수록 어려워지기 때문에, i 번 문제의 기본 점수는 i 점이다.
- 문제를 맞히면 그 문제의 기본 점수(즉 i 번 문제의 경우 i 점)를 획득하며, 틀리면 얻지 못한다.
- 기본 점수와 별개로, '보너스 점수'라는 값이 존재한다. 이는 처음에는 0점이다.
- 문제를 맞히면 그 때의 '보너스 점수'를 획득하고, '보너스 점수'의 값이 1점 증가한다.
- 문제를 틀리면 '보너스 점수'를 얻지 못하고, '보너스 점수'의 값이 0점으로 초기화된다.
입력
첫 번째 줄에 OX표의 길이인 자연수 N이 주어진다. (1 ≤ N ≤ 10,000)
두 번째 줄에 OX표를 의미하는 문자열 S가 주어진다.
S는 O(알파벳 대문자 O, ASCII 코드 79)와 X(알파벳 대문자 X, ASCII 코드 88)로만 구성되어 있으며, 길이는 N이다.
문자열 S의 i 번째 글자가 O이면 해당 참가자가 i 번째 문제를 맞혔음을 의미하고, X이면 틀렸음을 의미한다.
출력
첫 번째 줄에 입력으로 들어온 OX표의 점수를 출력한다.
예제 입력
8
XOOOXOOX
예제 출력
26
풀이
간단하게 생각하면
1. 길이 n 과 문자열 s를 입력받는다.
2. 그외 초기값들을 정리한다.
3. 반복문으로 n 또는 s의 길이만큼 반복한다.
4. 문자열에서 i번째 해당하는 문자가 'O' 라면?
4-1. 총합 = 총합 + 보너스 + (i+1) 값을 더하고, 보너스를 1 더한다
5. 만약에 아니면 보너스 값을 0으로 초기화한다.
6. 총합을 출력한다.
더보기
더보기
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String str = sc.next();
// 보너스 값 초기화
int bouns = 0;
int result = 0;
for(int i = 0; i < n; i++){
if(str.charAt(i) == 'O'){
result = result + (i+1) + bouns;
bouns++;
} else{
bouns = 0;
}
}
System.out.println(result);
}
}
'코테 > 백준' 카테고리의 다른 글
2753번 윤년 / 백준 문제 추천 (0) | 2025.04.05 |
---|---|
2798번 블랙잭 (1) | 2025.02.13 |
3009번 네 번째 점 (1) | 2025.02.11 |
11653번 소인수분해 (1) | 2025.02.10 |
2581번 소수 (1) | 2025.02.08 |