분류 전체보기 230

[Topcoder] SRM407 ~ 409 연습

내일 SRM도 있고.. 한동안 topcoder를 못해본 거 같아 연습삼아 몇개 풀어봤다. SRM407 DIV2 : 250점짜리 치고 좀 복잡한 문제.. 오랜만에 해서 오래걸리나 했는데.. 매치 결과에도 많이들 못푼 문제다. 나중에 다시 한번 풀어볼 것. class SpiralWalking { public: int totalPoints(vector m) { int idx[] = { 0, 1, 0, -1 }; int idy[] = { 1, 0, -1, 0 }; vector d; REP(i, m.size()) { vector sub; REP(j, m[0].size()) { sub.pb(m[i][j]-'0'); } d.pb(sub); } int i = 0, j = 0, index = 0; in..

Problem Solving 2008.10.28

[책] 게임중독 문제아의 미국유학 정복기

컴퓨터 게임에 푹 빠졌던 학생이 공부를 시작하면서, 게임에서 세웠던 전략을 공부에 응용하면서 성공(?)했다는 책 요약을 보고 읽어봤다. 나날이 사회적으로 문제가 되고 있는 게임중독 문제에 있어 앞으로 자식들 교육에도 참고가 될 거 같고.. 나도 한때 게임에 빠졌다가 그것을 어떻게 다른 분야에 적용할 수 있을까 고민하던 차라 나름 재밌게 읽었다. 책 내용은 주로 저자가 어릴때 게임에 얼마나 중독되어 있었느냐와 그 후에 치열하게 공부를 하고, 시련이 닥칠때 마다 게임에서 그랬던 것처럼 포기하지 않고, 시련을 즐기면서 레벨업을 해 나가는 과정을 그리고 있다. 게임에 빠지면 깊이 빠진다는 점이나, 게임을 할 때 쓸데없는 일을 안하고, 전략적으로 접근한다는 점에서 나랑 비슷하다는 생각을 해봤다.. 수학을 좋아한다..

책 이야기 2008.10.28

위젯이 뜨는 구나..

지난주 목요일에 참석했던 웹앱스콘 2008에서도 위젯이 한 꼭지를 차지할 정도로 비중이 커진 것을 느낄 수 있었다. 내가 그동안 알고 있던 위젯은 주로 웹관련 기능을 브라우저 밖으로 빼낸 윈도우 비스타의 가젯이나 야후 위젯과 같이 컴퓨터 바탕화면을 차지하고 있는 도구였다. 이러한 위젯은 PC 메모리를 불필요하게 점유하고, 특별히 필요성을 느끼지 못해서 사용이 확산되지 못했다고 본다. 그런데, 최근에 위젯이 뜨거워지는 이슈로는 아이폰, 구글 안드로이드 등 모바일쪽에서 불고있는 위젯 열풍과 최근 다음에서 위젯뱅크를 오픈하는 등 블로그나 카페에 붙이는 위젯이 인기를 끌고 있기 때문인거 같다. 모바일쪽에서는 각종 단말기 업체부터 구글, 오페라 등 여러 업체에서 저마다의 API와 개발대회를 유치하면서 표준을 선점..

about Web 2008.10.27

[Topcoder] SRM404 ~ 405 연습

SRM404 DIV2 : 오랜만에 topcoder를 해서 그런가 20분이나 걸렸다.. 꾸준히 연습을 해야겠음. 그냥 string을 sorting해서 eis인지 확인해도 된다. class ReadingBooks { public: int countBooks(vector r) { int ret = 0; int n = r.size(); for(int i=2; i< n; i++) { string s = r[i-2].substr(0,1) + r[i-1].substr(0,1) + r[i].substr(0, 1); if( count(ALL(s), 'i') == 1 && count(ALL(s), 's') == 1 && count(ALL(s), 'e') == 1) { i += 2; ret++; } } return ret;..

Problem Solving 2008.10.20

[USACO] 1.4 Packing Rectangles

4개 사각형에서 나올 수 있는 16가지 경우에 대해 4개의 사각형의 순서 4!인 24개의 경우 즉, 16*24개의 경우에 대해 각각 6가지 유형일때 최소로 싸는 사각형을 구했다. 6번째 유형에서 겹치는 부분 처리가 안되서 몇번 틀림.. 개인적으로 next_permutation 함수를 처음 써봤는데 상당히 쓸만한듯.. vector ret; bool find_cycle(int cycle[], int order) { int i = 0; while(order > 0) { cycle[i] = order % 2; order /= 2; i++; } return true; } bool check_value(int a, int b, int &cur, int &x, int&y) { if( cur >= a*b..

Problem Solving 2008.10.15

[USACO] 1.3 Prime Cryptarithm(Winning Solutions)

주어진 n이 10이기 때문에 O(n^5)이어도 시한제약에 걸리지 않았다. n이 충분히 작다면 단순하게 푸는 것도 이기는 방법이 될 수 있다. bool check_ok(int x, vector &d) { while(x) { int a = x % 10; if( find(ALL(d), a) == d.end() ) return false; x /= 10; } return true; } int main() { ofstream fout ("crypt1.out"); ifstream fin ("crypt1.in"); int n; fin >> n; vector d; REP(i, n) { int a; fin >> a; d.pb(a); } int f1 = 0, f2 = 0, ret = 0; REP(i, d.size()) {..

Problem Solving 2008.10.14

[USACO] 1.3 Calf Flac(Winning Solutions)

시간 제약조건때문에 계속 실패가 났다. 처음 시도한 방법은 n까지 돌면서, 2000부터 역으로 돌면서 펠린드롬인 경우 크기를 리턴하게 하면서, 나머지 경우에 대해 2000부터 현재 구한 값까지 펠린드롬인지 계산했다. 이 방법으로 1~7번 입력까지는 만족했으나, 계속 8번 입력이 1.5초를 초과했다. 결국 수정한 알고리즘은 n까지 돌면서, n을 중심으로 한 최대 펠린드롬의 크기를 구하는 방법. 앞의 방법이 n* 2000에 대해 펠린드롬을 계산하는데 반해 뒤의 방법은 n에 대해 펠린드롬을 계산한다. 즉, O(n*2000*펠린드롬계산)과 O(n*2*펠린드롬계산)의 차이로 볼 수 있겠다.. int check_pal(char d[], int start, int end, int n) { int ret = 0; wh..

Problem Solving 2008.10.13

[책] 프로그래밍은 상상이다.

임백준씨가 그동안(대략 2004~2007년) 마이크로소프트웨어나 경영과 컴퓨터에 기고한 칼럼들을 모은 책이다. 그리고, 지금 시점(2008년 5월경?)에서의 칼럼에 대한 소감들을 적어 두었다. 나는 그동안 해당 잡지를 통해 임백준씨의 글들을 못봤었기 때문에, 개인적으로 아주 좋았다. 최근 임백준씨의 책들을 뒤늦게 읽으면서, 그가 그동안 쓴 칼럼들을 구해서 읽고 싶었는데 이렇게 칼럼들을 모아놓은 책을 출판하다니 ㅎㅎ 책에서 보는 내용들은 그동안 그의 책들(행복한 프로그래밍, 뉴욕의 프로그래머, 누워서 읽는 알고리즘 등)에서 다뤄왔던 얘기들과 비슷한 얘기들도 있고, 그 외에 여러 다양한 주제에 대해 다루고 있다. 그 중에서 인상깊었던 칼럼은 '리펑토링'에 대한 내용과 '유닛테스트'에 대해 다룬 내용정도였다...

책 이야기 2008.10.13
반응형