본문 바로가기
C#/C# : Baekjoon

[백준] C# : OX퀴즈 (8958번)

by TODAYCODE 2021. 7. 30.
반응형

백준 단계별로 풀어보기 5단계 1차원배열 6번문제

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

문제의 핵심

1. 문제의 풀이를 구현할 수 있는가?

 


 

정답 코드만 보면 꽤나 길어서 복잡해보이는데 사실 별거 없는 문제다.

O가 몇번 연속되었는지 기억해둘 변수와

점수의 합계를 계산할 또하나의 변수만 존재하면 된다.

 

 

또한, for문을 돌려서 문자열의 각각이 O와 일치하는지 확인하고

일치하면 콤보를 증가시킨 뒤 콤보를 결과값에 더해주면 된다.

주의할 점은 O 한글자만을 비교해야한다면

"O"가 아니라 'O' 로 입력해야한다.

한글자는 Char 형태이기 때문에 ' ' 기호를 사용해야한다.

 

 

위와같은 코드를 구현했다면,

O가 반복될 수록 콤보가 증가하여 결과값이 O의 반복횟수만큼 증가된다.

그러다가 X가 나올때는 콤보를 0으로 만들어주면 된다.

 

 

정답 코드

using System;
using static System.Console;

namespace _1차원배열6
{
    class OX퀴즈
    {
        static void Main(string[] args)
        {
            // t 입력 받음
            int t = int.Parse(ReadLine());

            // 연속으로 몇번 맞추고 있는지를 저장하기 위한 combo 선언
            int combo = 0;
            // 점수 저장
            int score = 0;
            
            // t만큼 for문을 돌림
            for (int i = 0; i < t; i++)
            {
            // 값을 입력받음
                string s = ReadLine();

                for (int j = 0; j < s.Length; j++)
                {
                // 만약 해당 글자가 O라면,
                    if (s[j] == 'O')
                    {
                    // 콤보를 증가시킴
                        ++combo;
                        // 스코어에 콤보를 더해줌.
                        score += combo;
                    }
                    else
                    {
                    // 콤보를 0으로 만든다.
                        combo = 0;
                    }
                }
                // 계산값 출력
                WriteLine(score);
                // 다음번 반복을 위해서 콤보와 스코어를 0으로 바꿔줌
                combo = 0;
                score = 0;
            }
        }
    }
}

 

 

 

반응형

댓글