본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 8958번: OX퀴즈 C언어

문제 출처: www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

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

www.acmicpc.net

1. 코드

#include <stdio.h>
#include <string.h>

int main(void)
{
    int n, i, j, sum, add;              //sum = 최종적인 점수, add = 추가적으로 더해지는 점수
    char arr[81];
    
    scanf("%d", &n);
    
    for(i=0; i<n; i++)
    {
        sum=0, add=1;					
        scanf("%s", arr);
        for(j=0; j<strlen(arr); j++)    //strlen은 string.h파일에 있는 함수 중 문자열의 길이를 측정할 때 사용됨
        {
            if(arr[j]=='O')
            {
                sum+=add;
                add++;
            }
            else
                add=1;
        }
        printf("%d\n", sum);
    }
    return 0;
}

2. 느낀 점

첫 번째로 string.h 이 헤더 파일에 대해 알면 편하다. 왜냐하면 배열을 사용할 때 배열에 할당된 개수가 몇 개인지 구할 때 매우 유용하기 때문이다.

두 번째로는 문자열을 입력받는 것이다. 문자열을 입력받는 방법은 여러 가지 있지만 나는 그중에서 %s를 이용하여 입력하는 방법을 사용했다.

세 번째로 점수의 합계를 점점 추가적으로 늘려가는 것인데 연습뿐인 것 같다. 나는 여기서 하나의 변수로 해결을 해보려고 했으나 도저히 방법이 떠오르지 않아 변수를 추가하여 문제를 해결했다.