[백준 BOJ] 8958번 OX퀴즈 (C언어)
2022. 2. 2. 15:19ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/8958
접근 방법 - 누적에 따른 연산이 필요한 수학 문제
백준의 8958번 문제는 누적에 따라 덧셈을 가중하는 연산이 필요한 수학 문제이다.
해당 문제에선, O가 연달아 나오는 만큼 점수에 실시간으로 더하면서 최종 점수를 구해야 한다.
필자는 O가 연달아 나온 횟수를 따로 저장하는 변수를 이용하여 덧셈을 수행하면서 최종 답을 구하였다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 테스트 케이스의 수(n)를 입력받는다.
2) O 또는 X가 나열된 문자열(ch)을 하나씩 입력받는다.
3) 점수를 나타내는 sum을 0으로 초기화하면서 선언한다.
추가로, O가 연달아 나온 횟수를 저장할 cnt 변수를 0으로 초기화하며 선언한다.
4) 문자열을 탐색한다.
- 탐색한 문자가 O인 경우, cnt에 1을 추가하며 이 cnt를 sum에 더한다.
- 탐색한 문자가 X인 경우, cnt를 0으로 저장한다.
5) 4)의 과정을 통해 최종적으로 저장된 sum을 출력한다.
6) 모든 테스트 케이스가 2) ~ 5) 과정을 거쳤다면, 실행 종료한다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>
#include <string.h>
//백준 8958번 코드
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
char ch[80] = { 0 };
scanf("%s", &ch);
int sum = 0; int cnt = 0;
for (int j = 0; j < strlen(ch); j++) {
if (ch[j] == 'O') { cnt++; sum += cnt; }
else { cnt = 0; }
}
printf("%d\n", sum);
}
}
제출 결과
(2021.12.17 백준 8958번 문제 제출 결과)
반응형
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 9498번 시험 성적 (C언어) (0) | 2022.02.02 |
---|---|
[백준 BOJ] 9012번 괄호 (C++/cpp) (0) | 2022.02.02 |
[백준 BOJ] 8393번 합 (C언어) (0) | 2022.02.02 |
[백준 BOJ] 6749번 Next in line (C언어) (0) | 2022.02.02 |
[백준 BOJ] 5596번 시험 점수 (C++/cpp) (0) | 2022.02.01 |