반응형
DoZZang
Do IT
DoZZang
전체 방문자
오늘
어제
  • Programming
    • Git
    • Web
    • 기타
    • Python
      • CodeUp
    • Math
    • Algorithm
    • Baekjoon
    • C,C++
    • Life
      • 독서
      • Just
      • 영화

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

[C] 백준 8958번 : OX퀴즈
Baekjoon

[C] 백준 8958번 : OX퀴즈

2022. 9. 8. 12:05
반응형

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

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

코드

#include <stdio.h> 
int main() {
  int N,sum;
  char a[80];
  int score;
  scanf("%d",&N);
  while(N != 0) {
    sum = 0;
    score = 1;
    scanf("%s",a);
    char *ok = a;
    while(*ok) { 
      if(*ok == 'O') {sum += score; score++;}
      else{score = 1;}
      ok++;}
  printf("%d\n",sum);
    N--;}
  return 0;
}

☞ 풀이 전

O와 X를 입력받아야하기 때문에 문자열의 아이디어가 들어가야겠다고 생각하였습니다. 동작 횟수는 while문을 이용하였고 문자열을 끝까지 입력받는 방식은 while문을 이용하여 NULL값이 아닐 때 까지 입력받는 것으로 설정하였습니다.

두 번째 while문 안의 조건문을 구성하는데 시간이 엄청나게 걸렸습니다. 혼자 복잡하게 생각해서 이상하게 코드를 짜고 지우고.. 간단하게 나타낼 수 있는 코드였는데 왜 생각을 못 해냈는지 모르겠습니다.

☞ 왜?

O가 연속된다면 어떻게 처리할지 연속되지 않는다면 어떻게 처리할 지 조금만 고민해보면 되는 문제였습니다. 연속되는 O값과 독립적인 O의 개수를 받아 연속되는 O는 등차수열을 쓰려고 했고 독립적인 O는 따로 계산하여 더해주려고 했었는데 간단히 풀 수 있는 문제였습니다. 문자열에 대한 이해가 필요한 문제였습니다. 

☞ 다른 사람의 코드

#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);
    }
}

출처  : 집사소현과 재냥이(https://develop247.tistory.com/16)

도저히 고민하다가 보고 참고한 코드입니다. string헤더 파일을 사용하여 strlen함수를 이용해 한 문자씩 받아 처리하였습니다. 

반응형
저작자표시 (새창열림)

'Baekjoon' 카테고리의 다른 글

[C]백준 15596번 : 정수 N개의 합  (0) 2023.01.05
[C] 백준 4344번 : 평균은 넘겠지  (0) 2023.01.04
[C] 백준 1546번 : 평균  (0) 2022.08.16
[C] 백준 3052번 : 나머지  (0) 2022.08.16
[C] 백준 2439번 : 별 찍기 - 2  (0) 2022.08.13
    'Baekjoon' 카테고리의 다른 글
    • [C]백준 15596번 : 정수 N개의 합
    • [C] 백준 4344번 : 평균은 넘겠지
    • [C] 백준 1546번 : 평균
    • [C] 백준 3052번 : 나머지
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바