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 |