코딩테스트

[C언어] 백준 3230 금메달, 은메달, 동메달은 누가?

김채민 2021. 9. 20. 00:02

백준 3230 금메달, 은메달, 동메달은 누가?

https://www.acmicpc.net/problem/3230

 

3230번: 금메달, 은메달, 동메달은 누가?

첫 번째 줄에는 금메달을 딴 선수의 번호를, 두 번째 줄에는 은메달을 딴 선수의 번호를, 세 번째 줄에는 동메달을 딴 선수의 번호를 출력한다.

www.acmicpc.net

 

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

void insert(int arr[], int index, int value, int len) {
	for (int i = len - 1; i >= index; i--)
		arr[i + 1] = arr[i];
	arr[index] = value;
}

int main(void) {

	int N, M;
	scanf("%d %d", &N, &M);

	int* iArr, *iArr2;
	iArr = (int*)malloc(sizeof(int) * (N+1));
	iArr2 = (int*)malloc(sizeof(int) * (M+1));

	for (int i = 0; i < N; i++)
		iArr[i] = 0;

	for (int i = 0; i < M; i++)
		iArr2[i] = 0;

	int iRank;

	// 첫 번째 경주
	for(int i=1; i<N+1; i++) {
		scanf("%d", &iRank);
		if (iArr[iRank - 1] == 0) {
			iArr[iRank - 1] = i;
		}
		else {
			insert(iArr, iRank-1, i, N);
		}
	}

	for (int i = 0; i < M; i++) {
		scanf("%d", &iRank);
		insert(iArr2, iRank - 1, iArr[M-1-i], M);
	}

	for (int i = 0; i < 3; i++)
		printf("%d\n", iArr2[i]);
    
    free(iArr);
    free(iArr2);

	return 0;

}