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

+ Recent posts