본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.33] 획득 점수 구하기. 도박은 안돼요. / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 19.
반응형

획득 점수 구하기. 도박은 안돼요.

문제 설명

 

A와 B가 카드 게임을 할 때, 누가 더 많은 점수를 획득했는지, 또 획득한 점수는 몇점인지 알아보려고 합니다. 

게임 규칙은 다음과 같습니다.

1. 알파벳 a, b, c, d, e가 적힌 카드 뭉치가 있습니다.

2. A와 B가 서로 번갈아 가면서 n장씩 카드를 뽑습니다.

3. 소유한 카드 점수를 합산합니다. 알파벳 카드 한 장당 a = 1, b = 2, c = 3, d = 4, e = 5점으로 점수를 계산합니다.

4. 점수가 더 높은 사람이 승리 합니다.

 

위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.

 


예시

 

n bundle bundle_len return
4 "cacdbdedccbb" 12 [0, 13]

 


전체 코드 및 코드 해석

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>


char* func_a(char* bundle, int start, int n) {
	char* answer = (char*)malloc(sizeof(char) * n);
	for (int i = 0; i < n; i++)
		answer[i] = bundle[start + i * 2];
	return answer;
}

int* func_b(int score1, int score2) {
	int* answer = (int*)malloc(sizeof(int) * 2);
	if (score1 > score2) {
		answer[0] = 1;
		answer[1] = score1;
	}
	else if (score1 < score2) {
		answer[0] = 2;
		answer[1] = score2;
	}
	else {
		answer[0] = 0;
		answer[1] = score1;
	}
	return answer;
}

int func_c(char* card, int card_length) {
	int answer = 0;
	for (int i = 0; i < card_length; i++) {
		answer += card[i] - 'a' + 1;
	}
	return answer;
}
int* solution(int n, char* bundle) {
	char* a_cards = func_a(bundle, 0, n);
	char* b_cards = func_a(bundle, 1, n);
	int a_score = func_c(a_cards, n);
	int b_score = func_c(b_cards, n);
	int* answer = func_b(a_score, b_score);
	return answer;
}
int main() {
	int n = 4;
	char* bundle = "cacdbdedccbb";
	int* ret = solution(n, bundle);

	printf("solution 함수의 반환 값은 [");
	for (int i = 0; i < 2; i++) {
		if (i != 0) printf(", ");
		printf("%d", ret[i]);
	}
	printf("] 입니다.\n");
}
반응형

댓글