알고리즘/알고리즘 문제풀이

8958번: 0X퀴즈

b1ackhand 2019. 1. 1. 00:19

2018.12.31.


문제 출처:

https://www.acmicpc.net/problem/8958


문제 분석:

처음에 입력받을 수를 정하고 0X결과를 받아와서 연속되는 0개수 만큼 점수가 된다

ex) 000 => 1+2+3 = 6


문제 해결:

num을 입력받아 그 만큼 내용을 반복


gets() 함수를 통해 문자열을 배열에 입력받는다.

배열을 0으로 초기화하고

0이 나오기 전까지 즉 입력받은 0X결과가 끝날때까지 for문을 실행한다.


0일때는 이전 배열이 0인지 X인지 확인하여

0이면 연속되는 값을 추가하고 X일때는 1로 초기화한다


X일때는 추가되는 점수를 0으로 초기화한다.




내 소스코드:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#define _CRT_SECURE_NO_WARNINGS   
#include <stdio.h>  
 
int main()
{
    int num;
    char arr[80= {0, };
    int total = 0;
    int score = 0;
    int length = 0;
 
    scanf("%d\n"&num);
 
    for (int i = 0;i < num;i++)
    {
        total = 0;
        gets(arr);
 
        for (int j = 0;arr[j] != 0;j++)
        {    
            if (arr[j] == 'O')
            {
                if (j == 0)
                {
                    score = 1;
                    total += score;
                    continue;
                }
 
                if (arr[j - 1== 'O')
                {
                    score++;
                    total += score;
                }
                else if(arr[j - 1== 'X')
                {
                    score = 1;
                    total += score;
                }
            }
            else if (arr[j] == 'X')
            {
                score = 0;
            }
            
        }
        printf("%d\n", total);
    }
    
    return 0;
}
cs


실행결과:


고찰:


첫번째 배열 배열은 이전 배열이 없으니 주의해줘야 했다.

'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글

2539번: 모자이크  (0) 2022.01.24
2437번: 저울  (0) 2022.01.23
2577번: 숫자의 개수  (0) 2018.12.29
2448번: 별 찍기 - 11  (0) 2018.12.28
2444번: 별 찍기 - 7  (0) 2018.12.26