1524
#include <stdio.h>
#include <stdlib.h>
// qsort 비교 함수
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
// 병사 힘 입력
void input_soldier(int * arr, int size){
for(int i = 0; i < size; i ++){
scanf("%d", &arr[i]);
}
// 정렬
qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), compare);
}
// 전쟁
char war(int * s_arr,int * b_arr, int s_num, int b_num){
int s = 0, b = 0;
while(s_num != s && b_num != b){
// 제일 힘이 약한 병사 죽이기
if(s_arr[s] < b_arr[b]){
s ++;
}
// 만약 약한 병사가 두 팀 다 있으면 세비 병사 죽음
else{
b ++;
}
}
// 세비가 먼저 죽으면 S 반환
if(b_num == b){
return 'S';
}
// 세준이가 먼저 죽으면 B 반환
else if(s_num == s) {
return 'B';
}
}
int main(void){
// 테스트 케이스 입력
int test_case = 0;
scanf("%d", &test_case);
for(int i = 0; i < test_case; i++){
// 세준, 세비 병사 수 입력
int s_num = 0, b_num = 0;
scanf("%d %d", &s_num, &b_num);
// 동적 메모리 할당으로 병사 수 만큼 배열 만들기
int * s_soldier = malloc(sizeof(int)*s_num);
int * b_soldier = malloc(sizeof(int)*b_num);
// 병사들의 힘 입력 받기
input_soldier(s_soldier, s_num);
input_soldier(b_soldier, b_num);
// 전쟁으로 반환받은 전쟁에서 승리한 이름 출력
printf("%c\n" ,war(s_soldier,b_soldier,s_num,b_num));
// 동적 할당 된 메모리 해지
free(s_soldier);
free(b_soldier);
}
return 0;
}

동적할당메모리 !!! 배운거 써먹고 포인터도 배운거 써먹기!!
'백준' 카테고리의 다른 글
| [ 백준 / C ] 14563번 : 완전수 (0) | 2025.11.04 |
|---|---|
| [ 백준 / C ] 1436번 : 영화감독 숌 (0) | 2025.11.03 |
| [ 백준 / C ] 17450번 : 과자 사기 (0) | 2025.10.30 |
| [ 백준 / C ] 26560번 : Periods (0) | 2025.10.29 |
| [ 백준 / C ] 20233번 : Bicycle (0) | 2025.10.28 |