제5회 대학생 프로그래밍 경시대회 문제 B KTX

소스코드

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class KTX {
public static void main(String[] args) {
//int[] order = {3, 2, 1};
int[] order = {2, 4, 5, 3, 1};
System.out.println(isOrder(order));
}
public static boolean isOrder(int[] order) {
int route1 = -1, route2 = -1; // 두 우회로에 있는 열차의 등급(현재는 비어있다.)
int grade = 1; // 현재 도착해야 하는 열차의 등급
for(int i = 0; i < order.length; i++) {
// 선두 열차가 현재 최고 등급이라면 지나간다.
if(order[i] == grade) {
grade++;
}
// 처음 우회로에 현재 최고 등급의 열차가 있으면 지나간다.
else if(route1 == grade) {
route1 = -1;
grade++;
}
// 다음 우회로에 현재 최고 등급의 열차가 있으면 지나간다.
else if(route2 == grade) {
route2 = -1;
grade++;
}
// 처음 우회로가 비어있으면 거기로 보낸다.
else if(route1 == -1) {
route1 = order[i];
}
// 두번째 우회로가 비어있으면 거기로 보낸다.
else if(route2 == -1) {
route2 = order[i];
}
// 위의 모든 경우가 아니라면 순서대로 보내는 것은 불가능이다.
else {
return false;
}
}
// 모든 열차가 지나갔다면 순서대로 보내는 것이 성공했다.
return true;
}
}

주절주절

이 문제도 너무 옛날에 풀어서 정확히 기억이 안난다. 시간나면 다시 풀어보아야겠다.

Share Comments