<링크>
https://www.acmicpc.net/problem/2816
<소스코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include<stdio.h> #include<string.h> int main() { int N; scanf("%d", &N); int index[2]; char buf[11]; for (int i = 0; i < N; ++i) { scanf("%s", buf); if (strcmp(buf, "KBS1") == 0) index[0] = i; if (strcmp(buf, "KBS2") == 0) index[1] = i; } int add = index[0] > index[1]; for (int i = 0; i < index[0]; ++i) printf("1"); for (int i = 0; i < index[0]; ++i) printf("4"); for (int i = 0; i < index[1] + add; ++i) printf("1"); for (int i = 0; i < index[1] + add - 1; ++i) printf("4"); } | cs |
<풀이>
스페셜저지이고 어차피 명령길이가 500만 안넘으면 되기 때문에
1이랑 4로만 처리하려했다. 올릴때는 무조건 KBS1먼저 싹 올리고 그다음에 KBS2를 올렸다.
이런 방식에서 KBS2가 KBS1보다 먼저나오면 KBS1을 올리는과정에서 KBS2의 원래 위치가 하나 밀려내려가기 때문에 누가 먼저 나오는지 체크했다.