SRM 327, Div 1, Easy

Contest/TopCoder 2010/08/13 22:19

[Easy - NiceOrUgly]

SRM 당시 많은 사람들이 낚였다고 해서 풀어봤다. - 그 사실을 알고 풀어서 그런지 몰라도 NFA 돌리면 낚일만한게 없는데 조심해서 풀게 되더라. 다 해놓고 소스코드 정리까지 해서 262.59로 submit. 문제 알고 풀었으니 빠른건 아니다. systest 통과.

#include <string>
#include <queue>

using std::string;
using std::queue;

struct in_que
{
 int p, v, c;
};

int visited[100][10][10];

class NiceOrUgly
{
public:
string describe(string s)
{
 queue<in_que> q;
 in_que c, d;
 bool nice = false, ugly = false;
 
 c.p = c.v = c.c = 0;
 q.push(c);
 int n = s.length();
 while (!q.empty())
 {
  c = q.front(); q.pop();
  if (c.p == n) continue;
  
  d.p = c.p + 1;
  bool nextVowel = false, nextConsonant = false;
  if (s[c.p] == '?')
   nextVowel = nextConsonant = true;
  else if (s[c.p] == 'A' || s[c.p] == 'E' || s[c.p] == 'I' || s[c.p] == 'O' || s[c.p] == 'U')
   nextVowel = true;
  else
   nextConsonant = true;
   
  if (nextVowel)
  {
   d.v = c.v + 1; d.c = 0;
   if (d.v == 3)
   {
    ugly = true;
   }
   else if (visited[d.p][d.v][d.c] == 0)
   {
    visited[d.p][d.v][d.c] = 1;
    q.push(d);
   }
  }
  if (nextConsonant)
  {
   d.v = 0; d.c = c.c + 1;
   if (d.c == 5)
   {
    ugly = true;
   }
   else if (visited[d.p][d.v][d.c] == 0)
   {
    visited[d.p][d.v][d.c] = 1;
    q.push(d);
   }
  }
 }
 
 nice = (visited[n][0][0] || visited[n][1][0] || visited[n][2][0] || visited[n][0][1] || visited[n][0][2] || visited[n][0][3] || visited[n][0][4]);
 
 if (nice && ugly)
  return "42";
 else if (ugly)
  return "UGLY";
 else
  return "NICE";
}
};



덧 - 그건 그렇고, 블루스크린과 함께 한 주말 때문에 윈도우까지 싹 민 상태라서 java가 없어서 oracle 홈페이지에서 java 다운받으려고 했는데, 다운 링크가 깨져서 다운이 안된다. oracle은 sun 인수하고 나서 욕먹을 짓만 골라서 하는듯. -ㅅ-
저작자 표시 비영리 변경 금지
tags : SRM, Topcoder
Trackback 0 : Comment 3

주말은 블루스크린과 함께 :)

Diary/일상 2010/08/08 21:59
# 어제부터 컴퓨터가 이상 증세를 보이기 시작. 블루 스크린 뜨면서 MEMORY MANAGEMENT 어쩌고 뜨길래 메모리 문제인가? 하고 win7에 기본으로 들어있는 메모리 검사 프로그램 돌려보기 시작했는데, 2%쯤에서 다운. 리붓하고 다시해보니 21%쯤에서 다운.

# 아직 (어느정도는) 정상적으로 쓸 수 있는 상태라서 memtest86 다운받은 다음에 cd로 구워서 테스트. 1시간 가까이 돌렸는데 문제 없다.

# 메모리 문제는 아니네? 하면서 계속 쓰다가 다시 블루스크린 발생. 리붓되면서 바이오스 체크하고 넘어가는 과정에서 다운되고 그러길래 더위먹은건가? 하고 본체 옆 뚜껑 열었다.

# 이러고 나니 별 문제 없길래 그냥 쓰다가 오늘 다시 블루스크린 뜨기 시작. 이렇게 된거 "그냥 될때까지 쓰다가 완전히 망가지면 i7이나 사야지" 하면서 win7 SP1 beta나 돌려봐야지 하고 설치 시작. (소프트웨어 문제라면 sp1 설치하면서 시스템 파일들이 대부분 교체될테니 문제 해결을 기대한 노림수였으나...)


# 설치 실패라고 뜨고 에러코드는 SUCCESS. 확인해보니 실패한게 맞다. 이 이후로는 다른 에러코드 내면서 항상 실패한다. 하는 김에 IE9 PP4도 설치해봤는데, 이건 IE8이랑 따로 돌아가는 구조네? 이런거 기대한거 아니었는데..

# 어쨌든 그냥 윈도우 밀어버리고 재설치. 메신저고 뭐고 아무것도 안올려놓고 써야겠다.
저작자 표시 비영리 변경 금지
Trackback 0 : Comment 0

잡담

Diary/일상 2010/07/14 22:06
# 포스팅 하려다가 몇 개 빼먹었는데, 시기를 놓친 만큼 공개하지 않기로 했다. 글을 다 채워넣지도 못했다. 나중에 글 채워넣으면 그러다 보니 보름동안 블로그에 글을 하나도 안 올렸다.

# 며칠 전에 금융쪽 살펴보다가 5년짜리 연 4.8% 복리로 주는 적금이 있길래 아무 생각 없이 적당히 들어갔다. 나중에 계산해봤더니 연말정산 관련해서 들어가있는거 - 뺄 수 없는거 - 랑 합쳐서 한 달에 25만원 이상 쓰면 마이너스. 최소한 내년 말까지는 고정비용 포함 한 달에 25만원으로 살아야된다. 문제는 금리가 올라갈 가능성인데, 5년 내에 1% 이상 오르진 않겠지?
 -> 다시 보니까 월복리 4.8%다. 이정도면 끝까지 가는게 나을것 같다. :)
저작자 표시 비영리 변경 금지
Trackback 0 : Comment 0
◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [419] : NEXT ▶