페이지

2012년 8월 23일 목요일

google code jam 2010 풀이

Rotate

rotate 후, gravity 적용하는것은 그냥 하면 되고
row, column 은 돌면서 K개 연속으로 있는것 체크하면 되고
실수할 수 있는 부분은 대각선인데,
/은 ㅣㅡ (아래)순으로 돌고
\은 ㅣㅡ(위) 순으로 돌면 된다.
대각선에서 실수 할 수 있다.

그리고 시작위치와 속도 를 주면 K개 연속을 detect하는 펑션을 만들면 로직을 단순화 할 수 있다.
풀이를 보고 나서 .

  1. 실제로 rotate후 gravity적용하는 것은 왼쪽으로 밀어주면 끝이다. 굳이 rotate하고 gravity적요을 할 필요가 없다 --;; --> 생각을 하자. 젤 중요한 것은 시간 시간이다.
  2. N의 max가 50이므로 굳이 최적화 해서 할 필요없이 모든 칸을 돌면서 8방향을 체크하면 된다. --; --> N이 작으면, 최적화 하는 시간보다  bruteforce로 무식하게 하는것이 시간을 더 절약할 수도 있다. 중요한 것은 시간!

Number Game

dynamic programming 문제이고 turn개념때문에 좀 헷갈릴 수 있다.
small set은 cache로 어쩌 해결할 수 있으나 large set은 너무 시간이 걸렸다.
1억번의 빈 루프를 도는 것만 수분이 걸리는데, largeset중에 백만 x 백만 짜리 문제가 있다.-- 이거 머임?


오류들
- B는 모든 k에 대해서 이겨야 하지만 A는 한 k에 대해서만 이겨도 됨..
- turn별로 다른 cache를 사용해야 했는데 그것으로 오류.
- large set은 백만까지 가므로 기존 알고리즘으로는 한계가 있었음.


2012년 8월 22일 수요일

'공개된 삼성과 애플의 미국 내 판매실적을 보니 충격적'에 대한 반박

오늘 우연히 구글 플러스에서 이찬진님의 타임라인에서
공개된 삼성과 애플의 미국 내 판매실적을 보니 충격적
이란 글을 봤는데 그 논리가 어설퍼서 글로 남긴다. 우리 나라 국민에겐 애증의 삼성이지만 사실은 바로 알아야 하지 싶다. 막연한 마녀사냥은 이제 그만할때가 되지 않았는가 말이다.


이글을 쓴 분의 논리는 이렇다.
미국에서 삼성 스마트폰의 판매량은 애플과 비교해서 많이 작고 ASP도 애플의 60% 정도 밖에 되지 않는다. -> 그러면 그 엄청난 영업이익은 다 어디서 왔단 말인가? -> 국내 시장에서 엄청난 폭리!

 나의 반대 논리는 이렇다.
1. 삼성에게 글로벌 시장은 국내와 미국 밖에 없단 말인가? 삼성전자는 그야말로 글로벌 기업인데 전체 매출에서 국내 매출 비중은 16% 정도 밖에 되지 않는다. 유렵도 있고 아랍권도 있고 중국 동남아 남미 등등 그 외에도 많은 권역이 있다.

 2. 삼성전자는 갤럭시 S 씨리즈만 파는게 아니다. 저가 스마트폰(갤럭시 에이스, 등등)도 많이 팔기에 ASP가 애플에 비해 떨어지는 것은 자명한 일이다.

3. 핸드폰 영역에서 삼성의 비지니스 모델은 이통사에게 파는 것이지 소비자에게 직접 파는 게 아니다. (최근 화이트리스트 제도로 가능해지긴 했지만 아직은 미미한 수준이다) 그러므로 가격 결정은 이통사의 자율이 되는 것이고 애플에 비해서 가격이 잘 떨어지는 것도 이 때문이다. 애플은 계약서에 이통사가 자율적으로 가격을 떨어뜨리지 못하게 이통사와 계약을 따로 하는 것으로 알고 있다.

2012년 8월 20일 월요일

google code jam 2009 풀이


google code jam 2009년 문제.

* AllYourBase

C#이나 Java에서
double Match.pow(double, double)
만 제공을 한다.

해서 pow(5,23) 처럼 int의 범위를 넘어가는 큰 수의 경우 pow(double,double)은 부정확한 값을 리턴 할 수 있다.
위키에 따르면
double은
sing 1 bit
exponent 11 bit
significand 52 bit
이렇게 64 bit로 이루어진다.

즉, double이 significan가 표현할수 있는 수의 범위는 2^52승이 한계라는 말이다.
헌데 pow(5,23)같은 경우는 2^53을 넘어가는 범위에 있으므로 double버전의 pow로는 정확한 값을 계산해 낼수 없다는 얘기다.

그래서 long 버전의 pow(long,long)을 구현하거나 쓰는 것이 key인 문제였다.

* CenterOfMass

double은 의외로 오차가 많다. 특히나 정밀도를 요하는 계산에서.
문제에서 Any answer with absolute or relative error of at most 10-5 will be accepted. 이것이 key이다.


* bribe the prisoners


  1. P=10000이고 Q가100일 경우 가능한 경우의 수는 100! 이므로 bruteforce로는 시간적 한계가 있음.  large set 문제는 무식하게 풀면 풀지 못함.
  2. 이런 종류의 문제를 DP 문제라고 함. 정확히 catch는 못했지만 정확한 알고리즘이 없을 경우이고, recursive이면서, 반복될 확률이 높은 경우에 cache 를 적용해서 DP 문제라고 하는 것 같음. 
  3. log를 남기는 것도 큰 퍼포먼스 감소를 가져오므로 large일때는 로그도 끌것

2012년 8월 3일 금요일

회사의 공짜 takeout

최근에 회사는 구글의 영향을 받아서 인진 몰라도 회사에서의 밥값을 모두 공짜로 지원하기로 했다. 회사는 바쁜 사람들을 위해 주먹밥이나 햄버거, 샌드위치, 과일, 죽같은 takeout도 같이 제공을 하기 시작했다. 바쁜 사람들은 takeout을 받아놓고 덜 바쁠때 먹으라는 취지다. 참 좋은 제도이다.

역으로 여러 부작용이 같이 생겼는데..
냉장고가 takeout로 가득차서 냉장고 본연의 기능을 상실하고 takeout 저장소가 되었고, 그 takeout들중 상당부분이 유통기한이 지나서 버려진다는 점이다. 유통기한이 지난 것들을 가려내는 것이 청소아주머니의 큰일이 되어버렸다.
공짜니까 먹지도 않을 takeout을 받아놓는 것이 문제인 것이다.

takeout은 일회용기에 담아서 주는데 버려지는 용기가 좀 된다. 매 끼니때마다 생기는 그 용기들은 재활용되지 않고 모두 버려진다. 한번 왜 그런지 물어본적이 있는데, 재활용 하는것보다 소각이 더 싸게 먹히기 때문이라고 한다.
이 역시 용기의 가격이 너무 싸게 책정된 비합리에서 기인한다.

가격은 실패할수 있고 그 결과는 비합리적일 수 있다.

2012년 7월 21일 토요일

Eclipse PDE source attach

http://git.eclipse.org/c/pde/eclipse.pde.ui.git
에 가면 각 릴리즈 별로 taggin이 되어 있는데 자신의 버전에 맞는 태그를 찾아서 소스를 다운 받고 이것을 Attach해주면 된다.

내 경우는 
http://git.eclipse.org/c/pde/eclipse.pde.ui.git/snapshot/R3_7_2.zip
를 다운받고 attach해주니 잘 된다.

2012년 7월 12일 목요일

김정운, 노는 만큼 성공한다


48
사람들은 자신이 선택한 일에 한해서만 책임진다. 내가 선택했다는 느낌이 있을때, 그 일의 주인공이 된다는 이야기다. 통제의 주인은 경영자가 아니라 나 스스로라고 생각할때, 회사의 일을 자신의 일처럼 하게 된다. 통제나 선택의 주인이 자신이 아니라고 여겨질 때 사람들은 자존심이 상한다. ( 애가 뭔가를 계속 하려고 할때, 5분만 하고 그만할래? 아니면 10분 하고 그만할래? 하고 물어보면 대개 10분이라고 대답한다. 하지만 10분이 지난걸 확인시켜 주면 애는 정말 그만한다. 자신이 선택한 것은 애기들도 책임진다. ㅋ)

80
정보는 의미를 수용하는 가장 최소한의 인식단위이고, 지식은 이 정보와 정보들 간의 관계라고 할 수 있다. 그렇다면 새로운 지식은 기존의 정보와 정보들 간의 관계를 새롭게 만들어 내는 것을 뜻한다. 이것이 바로 창의성이다.

152
눈과 눈이 마주칠때. 독일인은 기본적으로 미소를 띄는 반면 우리는 적개심을 드러낸다. ( 정말 왜 당연히 적개심을 가지고 왜 째려봐를 남발하게 되는 것인가. 나부터 미소를. ㅋ)

169
그 자존심 높은 프랑스사람들도 헐리우드 영화에 손을 들었다. 오직 한국영화만이 지구상에서 헐리우드 영화에 맞서 안밀리고 버티고 있다. 한국에서 영화가 유난히 잘 되는 이유는 이 땅에 자기가 정말 재미있어 하는 것이 무엇인지 모르는 사람이 너무 많기 때문이다.

174
현대를 사는 우리가 사소한 재미를 찾지 못하는 이유는 재미에 대한 환상 때문이다. 엄청난 사랑에 대한 환상을 버려야 행복할 수 있는 것처럼 엄청난 재밍 대한 환상을 버려야 한다. 그런 재미는 지금까지도 없었고, 앞으로도 업다. 그환상을 버려야 사소한 재미가 얼마나 소중한 것인지 알게 된다.

179
내 지도교수는 can't 은 없다고 주장한다. 할 수 없다고 이야기하는 것은 거짓말이라는 이야기다. can not 이 아니고 will not 이라는 것이다. 다른 일에 비해 우선순위가 밀려 내가 하고 싶지 않다는 의미이다.

190
우리의 성공 내러티브는 단순한 패턴이다. 가난한 집에서 태어나 젊었을때 엄청 고생을 하고 열심히 잠도 잘 자지않고 일해서 결국엔 성공한다라는 패턴. 그러면서 포기하지 않고 노력하면 성공한다고 한다. 그러면서 가족에겐 미안하다고 말하고..
이 이야기에는 여유와 행복이 없다. 그렇게 해서 성공하면 무엇하나. 성공은 우연일뿐이다.

253
여가 전경과 배경을 바꾸는 일
내게 너무나 중요했던 일들을 배경으로 보내고, 배경에만 흐릿하게 있어왔던 것들을 전경으로 끌어올리는것

271
지금 행복하지 않은 사람은 나중에도 절대 행복하지 않다. 성공해서 나중에 행복해지는 것이 절대 아니다. 지금 행복한 사람이 나중에 성공한다.


2012년 7월 7일 토요일

하지못한다고 말하는 용기

오늘 문득 이런 생각이 들었다. 하지못할것들에 대해서 하디못한다고 얘기하는 것은 용기를 필요로 하고 그것이 소프트웨어의 미래에 좋을것이란 생각이 든 것이다. 왜냐고? 들어보시라

이번주초에 코드 프리즈가 되었고 이번주에 알파2를 릴리즈 하기로 되어 있었다. 하지만 우리팀은 외주업체의 늦은 딜리버리로 뒤늦게 코드를 반영했고 다른 팀은 이에 대한 대비를 할 시간이 충분차않았다. 그런 연유로 다른 팀에서 이번에 해당 피처를 넣기 힘드니 양해해 달라고 했다. 울팀입장에서는 거시기 하지만 정말 릴리즈를 하고 싶다면 그 팀의 말이 백번 옳다. 그 피처를 넣기 위해선 기일이 늦춰질 수밖에 없고 일정에 맞춰 일한 수많은 다른 팀원들은 불만을 가질것이고 릴리즈일정에 대한 신뢰도 깨어질 것이기 때문이다. 해서 다음 릴리즈에도 일정상 늦었어도 이번릴리즈에 넣을 수 있다는 나쁜 희망을 가지게 되고 너도나도 일정을 만만하게 여기기 때문이다.
결국 얻는 것보다 잃는게 많다.

메니저들은 릴리즈에 임박하여 못다한 것들을 해보겠다고 하는게 능사는 절대아님을 지각하기를 ... 못할 것은 못한다고 하는게 팀원을 위해서나 팀을 위해서나 더 좋은 선택이 될 수 있음을 기억할 필요가 있다.