백준 [8958]
문제
8958번
풀이
- 입력 받은 리스트 숫자와 같은 결과를 가져야한다.
- malloc을 사용하여 C언어에서 배열을 동적할당 해준다.
- 리스트를 입력 받으면 값을 저장하고 리스트의 길이를 구한다.
- 리스트와 크기를 전달해주면 주어진 조건에 맞게 결과를 구해주는 함수를 구현한다.
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
int score(char* L, int size);
int main(void) {
int N;
scanf("%d", &N);
int* result = 0;
result = (int*)malloc(sizeof(int)*N);
for (int i = 0; i < N; i++) {
char list[80];
scanf("%s", list);
int index = 0;
int listsize = 0;
while (list[index] != '\0') {
index++;
listsize++;
}
result[i] = score(list, listsize);
}
for (int i = 0; i < N; i++) {
printf("%d\n", result[i]);
}
return 0;
}
int score(char* L, int size) {
int sum = 0;
int count = 0;
for (int i = 0; i < size; i++) {
if (L[i] == 'O') {
++count;
sum += count;
}
else {
count = 0;
}
}
return sum;
}
느낀점
- C++과 달리 C언어는 배열의 동적할당을 사용하기 어렵다고 생각한다.