오늘 새벽 1시에 열렸던 매치..
매우 피곤한 상태임에도 불고하고 지난번 SRM 445 의 복수전을 벼르고있었는데..
이상한 난이도의 문제들 덕분에 결국 삽질끝에 또다시 참패했다..
rating이 10점은 올랐으니.. 뭐 참패까지는 아니지만.. 이거 참 맘에 안드네..
250은 매우 쉬운문제가 나왔으나.. 나의 코딩 스피드 부족으로 남들에 비해 순위가 많이 쳐졌다..
500은 너무 어려운 문제가 나오고.. 흐미..
이런경우 챌 하나 성공하면 순위를 많이 끌어올릴수 있으나.. 오늘은 정말 챌 할수있는게 없었다..
우리 방에서 500점 하나 빼놓고 모든 코드가 패스해버렸다.. 챌을 시도했으면 그야말로 X 되는 매치..
물론 챌을 시도한사람도 없었다..









Level1 - CubeWalking

그림과 같은 cube의 중앙에 로봇이 서있다.. L (turn left), R (turn right), W (move forward) 명령을 여러번 수행했을때 로봇이 위치한 cell의 color 구하기


9개의 cell을 0~8 까지 번호를 매겨서 관리하고 인풋에 대해 현재의 방향과 위치에따른 처리를 if 문으로 몽땅 해결했다.. 덕분에 시간좀 걸렸다..~

x 좌표와 y 좌표를 따로 관리하면서 하면 훨씬 짧은 코드가 되었을텐데..
그러고보니.. 내가 서밋한 코드중에 140줄이 넘는 코드가 있었나.. -_-??

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 using namespace std;
  7 //#define min(x, y) ((x) > (y) ? (y) : (x))
  8 //#define max(x, y) ((x) > (y) ? (x) : (y))
  9 //#define INF 999999999
 10
 11 class CubeWalking {
 12 public:
 13
 14 string finalPosition(string move)
 15 {
 16     int len;
 17     int dir, pos;
 18     int i;
 19     char ch;
 20     string res;
 21     dir = 0;
 22     pos = 4;
 23     len = move.size();
 24     for (i = 0; i < len; i++) {
 25         ch = move[i];
 26         if (ch == 'L') {
 27             dir = dir - 1;
 28             if (dir < 0)
 29                 dir = 3;
 30             continue;
 31         }
 32         else if (ch == 'R') {
 33             dir = (dir + 1) % 4;
 34             continue;
 35         }
 36         if (pos == 0) {
 37             if (dir == 0) {
 38                 pos = 6;
 39             }
 40             else if (dir == 1) {
 41                 pos = 1;
 42             }
 43             else if (dir == 2) {
 44                 pos = 3;
 45             }
 46             else {
 47                 pos = 2;
 48             }
 49         }
 50         else if (pos == 1) {
 51             if (dir == 0)
 52                 pos = 7;
 53             else if (dir == 1)
 54                 pos = 2;
 55             else if (dir == 2)
 56                 pos = 4;
 57             else if (dir == 3)
 58                 pos = 0;
 59         }
 60         else if (pos == 2) {
 61             if (dir == 0)
 62                 pos = 8;
 63             else if (dir == 1)
 64                 pos = 0;
 65             else if (dir == 2)
 66                 pos = 5;
 67             else if (dir == 3)
 68                 pos = 1;
 69         }
 70         else if (pos == 3) {
 71             if (dir == 0)
 72                 pos = 0;
 73             else if (dir == 1)
 74                 pos = 4;
 75             else if (dir == 2)
 76                 pos = 6;
 77             else if (dir == 3)
 78                 pos = 5;
 79         }
 80         else if (pos == 4) {
 81             if (dir == 0)
 82                 pos = 1;
 83             else if (dir == 1)
 84                 pos = 5;
 85             else if (dir == 2)
 86                 pos = 7;
 87             else if (dir == 3)
 88                 pos = 3;
 89         }
 90         else if (pos == 5) {
 91             if (dir == 0)
 92                 pos = 2;
 93             else if (dir == 1)
 94                 pos = 3;
 95             else if (dir == 2)
 96                 pos = 8;
 97             else if (dir == 3)
 98                 pos = 4;
 99         }
100         else if (pos == 6) {
101             if (dir == 0)
102                 pos = 3;
103             else if (dir == 1)
104                 pos = 7;
105             else if (dir == 2)
106                 pos = 0;
107             else if (dir == 3)
108                 pos = 8;
109         }
110         else if (pos == 7) {
111             if (dir == 0)
112                 pos = 4;
113             else if (dir == 1)
114                 pos = 8;
115             else if (dir == 2)
116                 pos = 1;
117             else if (dir == 3)
118                 pos = 6;
119         }
120         else if (pos == 8) {
121             if (dir == 0)
122                 pos = 5;
123             else if (dir == 1)
124                 pos = 6;
125             else if (dir == 2)
126                 pos = 2;
127             else if (dir == 3)
128                 pos = 7;
129         }
130     }
131     if (pos == 0 || pos == 2 || pos == 6 || pos == 8)
132         res = "RED";
133     else if (pos == 4)
134         res = "GREEN";
135     else
136         res = "BLUE";
137     return res;
138 }
139
140 };




Level2 - AntOnGraph

graph 가 주어지고 각 edge 에는 score 가 주어져있다.. 0번에서 1번으로 갈때 score를 최대 많이 먹기..

단 제한이 있는데 한번 move 에 1초가 걸리는데 반드시 step 만큼 홉을 건너야한다.. 또한 limit 초 안에 1번 vertex 에 도착해야한다..


to be updated..




Level3 - CubePainting



to be updated..

Comments

  1. victor5432 2009.08.09 23:48 Permalink Modify/Delete Reply

    님은 div1참가하셨나봐요
    저는 div2했는데
    병진인증함 ㄷㄷ 250을 뻑내고
    1000포인트가 백트래킹인데 병진인증 ㅋ
    500포인트가 큐브워킹인데 그건 낮은 점수를 얻고 ㄷㄷ

  2. whiteroc 2009.08.10 12:53 Permalink Modify/Delete Reply

    켁, if, case 문들.....table로 바꾸면 코드도 짧고 쉽지 않남? ㅡ,.ㅡ;;;

    • helloneo 2009.08.10 20:41 신고 Permalink Modify/Delete

      음.. 이건 빨리 짜는게 중요한데.. 바로떠오른 해법으로 무식하게 짜느냐.. 좀 생각해서 짧은 코드를 만드느냐.. 중에 전자를 택한거죠..~

  3. whiterock 2009.08.10 23:35 Permalink Modify/Delete Reply

    흐음...재미로 해야 하는 건가 보구먼...ㅡ,.ㅡ;;; 진지하게 접근하면 안되는 거네..ㅋㅋㅋ

Leave a Comment


to Top