엄청 오랜만에 참가한듯..~  
250 대충 빨리 푸니깐 rating 오를꺼같아서.. 나머지는 그냥 접었다.. 챌도 시도했으면 좋은 결과가 있었을텐데..
어쨋든 rating 은 좀 올라서 다시 Yellow 복귀!!!!

아.. 새벽 2시 매치는 너무 힘들어.. ㅠㅠ







Level1 - KingSort

이름을 Sorting 하는 문제..

이문제의 핵심은 Roman digit을 아라비아 숫자로 변환하는데 있다.. 예전에 짜둔게 있어서 그냥 복.붙 했는데..
30% unused 어쩌구 warning 이 나서 한참 삽질했다.. -_-
line 84 를 넣으니깐 warning 이 사라짐.. 이것땜에 시간 엄청 까먹음..

  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 //#define EPS 1e-14
 11
 12 typedef struct _n {
 13     char name[100];
 14     char no[100];
 15     int val;
 16 } NAME;
 17 NAME king[55];
 18 int n;
 19 int to_arab(char* buf)
 20 {
 21     int len, sum, temp, i;
 22     char ch;
 23     len = strlen(buf);
 24     sum = 0;
 25     for (i = 0; i < len; i++) {
 26         ch = buf[i];
 27         if (ch == 'L') {
 28             sum += 50;
 29         }
 30         else if (ch == 'X') {
 31             temp = 0;
 32             for ( ; i < len && buf[i] == 'X'; i++) {
 33                 temp += 10;
 34             }
 35             if (buf[i] == 'L' || buf[i] == 'C')
 36                 sum -= temp;
 37             else
 38                 sum += temp;
 39             i--;
 40         }
 41         else if (ch == 'V') {
 42             sum += 5;
 43         }
 44         else {
 45             temp = 0;
 46             for ( ; i < len && buf[i] == 'I'; i++) {
 47                 temp += 1;
 48             }
 49             if (buf[i] == 'V' || buf[i] == 'X')
 50                 sum -= temp;
 51             else
 52                 sum += temp;
 53             i--;
 54         }
 55     }
 56     return sum;
 57 }
 58
 59
 60 int comp(const void* x, const void* y)
 61 {
 62     int val1, val2;
 63     NAME* a = (NAME*)x;
 64     NAME* b = (NAME*)y;
 65     if (strcmp(a->name, b->name) != 0) {
 66         return strcmp(a->name, b->name);
 67     }
 68     val1 = to_arab(a->no);
 69     val2 = to_arab(b->no);
 70     return val1 - val2;
 71 }
 72
 73 class KingSort {
 74 public:
 75
 76 vector <string> getSortedList(vector <string> kings)
 77 {
 78     int i;
 79     string temp;
 80     vector<string> res;
 81     n = kings.size();
 82     for (i = 0; i < n; i++) {
 83         sscanf(kings[i].c_str(), "%s%s", king[i].name, king[i].no);
 84         king[i].val = to_arab(king[i].no);
 85     }
 86     qsort(king, n, sizeof(NAME), comp);
 87     for (i = 0; i < n; i++) {
 88         temp = king[i].name;
 89         temp = temp + " ";
 90         temp = temp + king[i].no;
 91         res.push_back(temp);
 92     }
 93     return res;
 94 }
 95
 96 };



Level3 -  BigAndSmallAirports



xx


'Problem Solving > TopCoder logs' 카테고리의 다른 글

TCO13 Round 1C 생명연장 매치  (0) 2013.03.10
TCO12 R1A - 606등 -_-;;  (0) 2012.04.01
SRM 521  (0) 2011.10.24
SRM 511  (0) 2011.07.04
TCO11 R1 - 탈락  (0) 2011.06.23
SRM 509 !!  (0) 2011.06.09
SRM 507 - 나이스!  (0) 2011.05.30
TCO11 Qual2  (0) 2011.05.20
TCO11 Qual1  (2) 2011.05.15
SRM 504 - unrated event  (0) 2011.04.27

to Top