[8958] OX퀴즈 C 백준

pyungjong·2023년 9월 15일

C++ 백준

목록 보기
6/8

백준 [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언어는 배열의 동적할당을 사용하기 어렵다고 생각한다.
profile
코린이

0개의 댓글