디지털 티비
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void num1(int* pointer, char arr[][11], int cnt) {
if ((*pointer) < cnt) {
(*pointer)++;
}
}
void num4(int* pointer, char arr[][11], int cnt) {
if ((*pointer) > 1) {
(*pointer)--;
char stor[11];
strcpy(stor, arr[(*pointer)]);
strcpy(arr[(*pointer)], arr[(*pointer) + 1]);
strcpy(arr[(*pointer) + 1], stor);
}
}
int main(void) {
int cnt;
char arr[101][11];
scanf("%d", &cnt);
for (int i = 1; i <= cnt; i++) {
scanf("%s", &arr[i]);
}
int pointer = 1;
while (1) { // kbs1 정렬
if (strcmp(arr[1], "KBS1") == 0 && strcmp(arr[2], "KBS2") == 0) return 0;
if (strcmp(arr[pointer], "KBS1") == 0) break;
num1(&pointer, arr, cnt); printf("1");
}
while (1) { // kbs1 정렬
if (strcmp(arr[1], "KBS1") == 0 && strcmp(arr[2], "KBS2") == 0) return 0;
if (strcmp(arr[1], "KBS1") == 0) break;
num4(&pointer, arr, cnt); printf("4");
}
while (1) { // kbs2 정렬
if (strcmp(arr[1], "KBS1") == 0 && strcmp(arr[2], "KBS2") == 0) return 0;
if (strcmp(arr[pointer], "KBS2") == 0) break;
num1(&pointer, arr, cnt); printf("1");
}
while (1) { // kbs2 정렬
if (strcmp(arr[1], "KBS1") == 0 && strcmp(arr[2], "KBS2") == 0) return 0;
if (strcmp(arr[2], "KBS2") == 0) break;
num4(&pointer, arr, cnt); printf("4");
}
return 0;
}
- 1234번 실행하는 함수 만들기 (2차원 배열 참조시 열을 정의해주어야 한다..)
- 어떻게 kbs1과 kbs2를 정렬할 지 알고리즘 세우기
- 1과 4를 이용하여 1-4(kbs1)-1-4(kbs2)순으로 정렬
- 1, 3, 4를 이용하여 3-1-4-(포인터 위치 체크)-3-1-4 순으로 kbs1, kbs2정렬
- 출력 개수가 500을 넘기면 안되지만 1과 4만 이용하는 무식한 방법을 선택해도 방송 개수가 2<=N<=100이므로 500을 초과할 수 없다. 따라서 편한 방법을 사용하면 됨.