어제 9시에 열린 매치.. 이번 매치에서는 문제가 너무 구리게 나온 덕분에(?) 역대 최고의 성적을 올렸다.. -_-;; 250점은 너무 쉬운 문제가 나왔고.. 500, 1000은 상당히 어려웠다.. 덕분에 많은 고랩들이 250점짜리만 풀고 줄줄이 삽질하는 바람에.. 별볼일없는 내가 그냥 평소대로 했더니 높은 등수가 되었다.. -_-;; 하긴 이런 이상한 매치도 가끔 있어야 나도 먹고살지..;;

덕분에 rating이 무려 176점이나 올랐다.. 3연속 상승인데.. 이제 좀 떨어질때가 됐군.. ㅋㅋ 볼라도 무려 500가까이 되고.. 아무래도 다음 매치에서는 몸사려야할듯..?




Level1 - TheLuckyString
어떤 단어가 모든 이웃하는 문자가 모두 같지 않으면 lucky 하다고 할때, 주어진 문자들로 만들 수 있는 lucky한 단어의 개수 세기..

letter의 개수가 최대 10이기때문에 그냥 next_permutation으로 다 돌렸다..

나름 문제도 빨리 이해하고 잽싸게 코딩해서 245점에 서밋했는데도 방에서 5등.. -_-;;
문제가 아무리 쉽다고는 하지만.. 도대체 249점을 맞는 사람은 뭐지..;;
c++ string 사용법을 몰라서 항상 char 배열로 바꾼다음에 코딩하는데..
이거랑 sorting에서 시간을 좀 낭비한 것 같다..

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 using namespace std;
  7
  8 int comp(const void* x, const void* y)
  9 {
 10     char* a = (char*)x;
 11     char* b = (char*)y;
 12     return *a - *b;
 13 }
 14
 15 class TheLuckyString {
 16 public:
 17
 18 int count(string s)
 19 {
 20     int len, cnt, i;
 21     char buf[100];
 22     strcpy(buf, s.c_str());
 23     len = strlen(buf);
 24     qsort(buf, len, sizeof(char), comp);
 25     cnt = 0;
 26     do {
 27         for (i = 1; i < len ;i++) {
 28             if (buf[i-1] == buf[i])
 29                 break;
 30         }
 31         if (i == len)
 32             cnt++;
 33     } while (next_permutation(buf, buf+len));
 34     return cnt;
 35 }
 36
 37 };



Level2 - TheLongPalindrome
n과 k가 주어질 때, 길이 n 이하의 문자열 중에 k개 이하의 문자만 사용하여 만들 수 있는 palindrome의 개수 구하기..


to be updated..



Level3 - TheStringGame



to be updated..






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

TCO09 Qual 3 (완료)  (0) 2009.03.05
TCO09 Qual 2  (0) 2009.03.01
TCO09 Qual 1  (0) 2009.02.25
TopCoder SRM 434 Div 1  (0) 2009.02.10
TopCoder SRM 432 Div 1  (0) 2009.01.07
탑코더 스름 426 디비젼 1  (0) 2008.11.25
TopCoder SRM 425 Div 2 (완료)  (0) 2008.11.13
TopCoder SRM 422 Div 1  (4) 2008.10.19
TopCoder SRM 421 Div 1  (0) 2008.10.12
TopCoder SRM 420 Div 2  (0) 2008.10.03

to Top