지난주 목요일 8시에 열렸던 매치.. 오랜만에 Div2에서 참여했다..
그런데 이번에도 역시 실망스런 결과.. ㅠ_ㅠ
그냥 두문제를 가볍게 풀었는데.. system test에서 fail했다..
젠장!! 거의 맞다고 생각했는데.. 뭐가 틀린것이지..
그래도 div2라서 raiting을 어느정도 유지했지 이번에 div1에서 했으면 완전 폭락할뻔했다..;;
그래도 오랜만에 챌 하나 성공했다.. 이것도 div2라서 가능한듯..
raiting은 눈꼽만큼 올랐는데.. 덕분에 다음에도 또 div2 다..;;

사용자 삽입 이미지



Level1 - MostCommonLetters

문자열이 마구 주어지고, 가장 많이 나온 letter를 오름차순으로 출력하기

그냥 text를 쭉 읽으면서 나오는 letter들의 count를 1씩 증가시켰다.. 가장 많이 나오는 letter를 출력했다..

사실 이런 문제에서 시간을 낭비하면 안되는데.. 이정도 문제에 224점이면 케 안습이다.. 흠.. 요즘들어 코딩 속도가 안나온다.. 나이를 먹어서인지 순발력이 계속 떨어진다.. ㅠ_ㅠ

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 #include <set>
  7 using namespace std;
  8 #define max(x, y) ((x) > (y) ? (x) : (y))
  9
 10 class MostCommonLetters {
 11 public:
 12
 13 string listMostCommon(vector <string> text)
 14 {
 15     char buf[100][100];
 16     int size, max1, len;
 17     int i, j;
 18     int ch_cnt[128];
 19     string res;
 20     size = text.size();
 21     for (i = 0; i < size; i++) {
 22         strcpy(buf[i], text[i].c_str());
 23     }
 24     memset(ch_cnt, 0, sizeof(ch_cnt));
 25     max1 = 0;
 26     for (i = 0; i < size; i++) {
 27         len = strlen(buf[i]);
 28         for (j = 0; j < len; j++) {
 29             if (buf[i][j] == ' ')
 30                 continue;
 31             ch_cnt[buf[i][j]]++;
 32             max1 = max(max1, ch_cnt[buf[i][j]]);
 33         }
 34     }
 35     res = "";
 36     for (i = 'a'; i <= 'z'; i++) {
 37 printf("ch_cnt[%c] = %d\n", i, ch_cnt[i]);
 38         if (ch_cnt[i] == max1) {
 39             res += (char)i;
 40         }
 41     }
 42     return res;
 43 }
 44
 45 };




Level2 - NextNumber

input으로 N이 주어지고, N보다 큰 수 중에서 이진수로 나타냈을 때 1의 개수가, N을 이진수로 나타냈을때의 1의 개수와 같은 가장 작은 수 구하기

이 문제는 N을 2진수 string으로 변환 후 next permutation을 구하면 된다.. 젠장!!
petr나 기타 많은 사람들은 pattern을 찾아서 구했다.. 뒤에서부터 읽어서 "01" pattern을 찾은 후
10으로 바꾸고.. 나머지는 어쩌고 저쩌고.. 나도 비스무리하게 했는데.. 생각을 잘못했다.. ㅠ_ㅠ

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 #include <set>
  7 using namespace std;
  8 #define max(x, y) ((x) > (y) ? (x) : (y))
  9
 10 class NextNumber {
 11 public:
 12
 13 int getNextNumber(int N)
 14 {
 15     int i, j;
 16     int bit_cnt;
 17     int bit[40], temp[40];
 18     int res;
 19     bit_cnt = 0;
 20     while (N > 0) {
 21         if (N % 2 == 0) {
 22             temp[bit_cnt++] = 0;
 23         }
 24         else {
 25             temp[bit_cnt++] = 1;
 26         }
 27         N /= 2;
 28     }
 29     temp[bit_cnt++] = 0;
 30     for (i = 0, j = bit_cnt-1; i < bit_cnt; i++, j--) {
 31         bit[i] = temp[j];
 32     }
 33     next_permutation(bit, bit+bit_cnt);
 34     res = 0;
 35     for (i = 0; i < bit_cnt; i++) {
 36         res *= 2;
 37         res += bit[i];
 38     }
 39     return res;
 40 }
 41
 42 };



 
Level3 - DancingCouples




to be updated..

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

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
TopCoder SRM 418 Div 2  (0) 2008.09.21
TopCoder SRM 417 Div 2  (0) 2008.09.13
TopCoder SRM 414 Div 1  (0) 2008.08.17
TopCoder SRM 413 Div 1  (0) 2008.08.08
TopCoder SRM 412 Div 1  (0) 2008.08.01
TopCoder SRM 410 Div 1  (2) 2008.07.20
TopCoder SRM 409 Div 1 (완료)  (0) 2008.07.11

to Top