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

+ Recent posts