일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- php 프로그래밍 입문 3판
- 백준
- php 프로그래밍 입문 문제풀이
- 최단 경로
- programmers
- SWEA
- JAVA SPRING
- php 프로그래밍 입문
- 자바
- Flutter
- php 프로그래밍 입문 솔루션
- 자바 스프링
- php 프로그래밍
- php 프로그래밍 입문 연습문제
- C언어
- 페이코 추천인코드
- 플러터 개발환경 설정
- 페이코 초대코드
- 페이코 추천인
- 페이코 친구코드
- php 프로그래밍 입문 예제
- php
- Java
- 스프링
- spring
- C
- 파이썬
- 한정 분기
- 플러터
- 배열
- Today
- Total
ImJay
[C언어] 백준 8958번 : OX퀴즈 본문
백준 8958번 : OX퀴즈
- 사용언어 : C언어
1. 문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
2. 코드
#include <stdio.h>
#include <string.h>
int main(void) {
int input, score, sum;
char test[80];
scanf("%d", &input);
for(int i=0; i<input; i++) {
sum = 0;
score = 1;
scanf("%s", test);
for(int j=0; j<strlen(test); j++) {
if(test[j] == 'O') {
sum += score;
score++;
}
if(test[j] == 'X') score = 1;
}
printf("%d\n", sum);
}
}
3. 풀이
먼저, 새로 등장하는 strlen() 함수에 대해 알아야 합니다.
strlen() 함수는 문자열의 길이를 반환하는 함수이며, <string.h> 헤더파일을 필요로 합니다.
예를 들어, char test[80] = "OXXO"; 라면, strlen(test) = 4가 되는 것입니다.
이해하셨다면, 바로 문제풀이로 들어가겠습니다.
int형 변수 input은 테스트 케이스의 개수, score는 점수이며, sum은 점수의 합입니다.
char형 배열 test는 문자열 O와 X를 받아줍니다.
1) scanf로 테스트 케이스의 개수 input을 받아줍니다.
2) 점수의 합 sum을 0으로 초기화
-> for문이 끝나면 새로운 OX문을 세야 하기 때문입니다.
3) 점수 score 또한 1로 초기화
-> 연속적인 O로 마무리 시 점수가 1보다 큰값으로 마무리 되기 때문입니다.
4) 그 후 scanf로 문자열 O,X를 받아줍니다.
5) 그 후 다시 for문에서 strlen(test) ( OX의 총 갯수) 만큼 O와 X를 세어줍니다.
6) test[j]가 O라면 sum += score 하여 점수를 더해주고 score++로 score의 점수를 올려줍니다.
7) test[j]가 X라면 연속적인 O가 끝났으므로 score = 1로 초기화해줍니다.
8) 다 세었으면 점수를 출력하고, 다시 루프.
'백준 - C, C++ > 05. 1차원 배열' 카테고리의 다른 글
[C언어] 백준 4344번 : 평균은 넘겠지 (2) | 2020.10.02 |
---|---|
[C언어] 백준 1546번 : 평균 (0) | 2020.09.29 |
[C언어] 백준 3052번 : 나머지 (6) | 2020.09.28 |
[C언어] 백준 2577번 : 숫자의 개수 (0) | 2020.09.24 |
[C언어] 백준 2562번 : 최댓값 (0) | 2020.09.24 |