https://www.acmicpc.net/problem/8958
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
풀이
1)문자열과 관계되므로 문자열 배열을 선언하는 idea
*문자열은 선언하고 바로 넣어주면 error 가 난다. 넣으려면 하나씩 넣어줘야함
2)선언한 문자열 배열의 최대 길이 80까지 모두다 체크할 순 없으므로,
strlen 함수를 사용해서 입력한 문자열의 길이만큼만 체크하는 idea
*#include <string.h> // strlen 함수가 선언된 헤더 파일 필요함
3)for문을 두개 사용( (1)문자열 배열 인수를 한사이클 씩 도는것, 2)테스트 개수)
답안코드
#include <stdio.h>
#include <string.h> // strlen 함수가 선언된 헤더 파일
int main()
{
int Test_case;
//Testcase 의 개수 입력
printf("Testcase의 개수를 입력하시오\n");
scanf("%d", &Test_case);
int count ;
int total ;
//문자열은 0보다 크고 80보다 작으므로
char score[79]; //문자열 형식으로 배열 선언 (0~79)
for (int i = 0; i < Test_case; i++) {
total = 0;
count = 1; //여기서 초기화를 해주어야 다음 싸이클에 영향을 주지 않는다
printf("입력:");
scanf("%s", score);
//score = "OXOXOX"
for (int j = 0; j < strlen(score); j++) {
if (score[j] == 'O') {
total = total + count;
++count;
printf("total: %d\n", total);
}
if (score[j] == 'X') {
count = 1;
printf("----------count = 1\n");
}
}
printf("%d\n", total);
}
return 0;
}
'프로그래밍 언어 > C' 카테고리의 다른 글
C언어 1065번 해설 한수 (0) | 2021.09.02 |
---|---|
C언어 백준 4344번 해설 (0) | 2021.09.01 |
C언어 백준 1546번 (0) | 2021.08.31 |
C언어 백준3052 해설 (0) | 2021.08.31 |
C언어 백준 2577번 해설 (0) | 2021.08.25 |