본문으로 바로가기

어떤 변수를 1차원 배열로 할당해야하는 지 잘 파악하면 문제를 해결할 수 있다.

1152: 단어의 개수

#include <cstdio>
#include <cstring>

int main() {
  char str[1000000];
  scanf("%1000000[^\n]s", str);
  
  int k = 0;
  auto l = strlen(str);
  for (auto i=0; i<l; i++) {
    if (str[i] == ' ') k++;
  }
  
  if (str[0] == ' ') k--;
  if (str[l-1] == ' ') k--;
  
  printf("%d\n", k+1);// 단어의 개수는 띄어쓰기+1 이다
  return 0;
}

문자열의 맨 처음과 마지막의 공백을 주의하자.

2577: 숫자의 개수

#include <cstdio>
#include <cstring>

int n[10];// 숫자의 개수를 저장하는 배열

int main() {
  int a, b, c;
  scanf("%d %d %d", &a, &b, &c);
  
  int rslt = a*b*c;
  char str[9];
  sprintf(str, "%d", rslt);// int to string
  
  auto l = strlen(str);
  for (auto i=0; i<l; i++) {
    int num = str[i] - '0';
    n[num]++;
  }
  
  for (int i=0; i<=9; i++) {
    printf("%d\n", n[i]);
  }
  
  return 0;
}

숫자의 개수를 저장하는 1차원 배열을 선언하여 문제를 해결할 수 있다.

8958: OX퀴즈

#include <cstdio>
#include <cstring>

int main() {
  int t;
  scanf("%d", &t);
  getchar();
  
  while (t--) {
    char str[80];
    scanf("%s", str);
    
    int score = 0;
    int tmp = 0;
    
    auto l = strlen(str);
    for (auto i=0; i<l; i++) {
      if (str[i] == 'O') {
        score += ++tmp;
      }
      if (str[i] == 'X') {
        tmp = 0;
      }
    }
    
    printf("%d\n", score);
  }
}

2920: 음계

#include <cstdio>

int main() {
  int ascending = 0;
  int descending = 0;
  
  for (int i=0; i<8; i++) {
    int x;
    scanf("%d", &x);
    x == (i+1) ? ascending++ : ascending;
    x == (8-i) ? descending++ : descending;
  }
  
  if (ascending == 8) {
    printf("%s\n", "ascending");
  } else if (descending == 8) {
    printf("%s\n", "descending");
  } else {
    printf("%s\n", "mixed");
  }
  
  return 0;
}

10039: 평균 점수

#include <cstdio>

int main() {
  int sum = 0;
  int score;
  for (int i=1; i<=5; i++) {
    scanf("%d", &score);
    sum += score >= 40 ? score : 40;// 40점 이하일 경우 40점을 더한다 
  }
  printf("%d\n", sum/5);
  return 0;
}

댓글을 달아 주세요