일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 해커컵
- 개발7년차매니저1일차
- 2016년회고
- 데이터플랫폼
- 2017회고
- clean code
- spray
- wait region split
- 클린코드
- coursera
- 박종천
- 켄트백
- 테스트주도개발
- 데이터레이크
- 실전사례
- 알고스팟
- 코딩인터뷰
- 함수형 사고
- 개발자
- 단위테스트
- functional thinking
- 동시성
- Raw-Request-URI
- 회고
- datalake
- hackercup2017
- 데이터야놀자
- kafka
- 개발자로살아남기
- 데이터유통
- Today
- Total
Software Engineering Note
Facebook Hacker Cup 2015 Qualification Round 본문
2015년 1월 9일 (금) 페이스북 해커컵이 열렸다.
대회가 열리는지도 모르고 있었는데 사내에 관심있는 사람들은 모여서 같이 하자는 글이 올라와서 알게되었다.
할 일도 딱히 없어서 회의실에 모여 문제를 풀었다. 저녁 8시에 모였는데 이미 대회는 시작되었더군..
내가 풀기 시작했을 때도 60시간 넘게 남아있었으니.. 예선전답게 문제푸는 시간은 넉넉하게 주어졌다.
(여기에 제시된 코드는 대회때 제출한 것은 아니고, 나름 다듬은 후에 input/output으로 검증한 것임을 알려둔다.)
주어진 숫자에서 한 번만 swap해서 최소/최대 값을 찾는 문제.
아.. 문제를 읽고 섣불리 풀다가 물먹은 문제다. 역시 방심은 금물..
입력 값이 길지않기 때문에 모든 경우의 수를 만들어도 되고, 그렇게 풀었어야 했는데 머리를 쓴다고 하다가 망했다 -_-;
처음 든 생각은 0을 제외한 가장 작은 수를 앞에다 두면 최소값, 가장 큰 수를 두면 최대값이 된다는 거였다.
그런데 "9990999" 같은 입력을 보는 순간 실수했다는 것을 깨달았다.
한 자리씩 swap 하면서 최소/최대 값을 찾으면 된다.
코드: https://github.com/xgate/competition/blob/master/hackercup/2015/QR/cooking_the_books.cpp
음식에 정해진 영양소가 있고 정해진 영양소 값에 맞게 먹어야 하는 문제.
입력 값이 최대 20개 이고, 음식은 일부만 먹을 수 없기 때문에 상태공간이 작다.
에라 모르겠다 전탐색이다. DFS ...
코드: https://github.com/xgate/competition/blob/master/hackercup/2015/QR/new_years_resolution.cpp
3. Laser Maze
일단 문제 이해가 쉽지않았다. -_-;
결국 내가 움직이면 모든 터렛이 90도 시계방향으로 회전, 그리고 레이져 발사!
불행인지 다행인지 레이져는 벽을 뚫을 수 없고, 터렛도 뚫을 수 없다.
문제가 어려웠던 이유는 같은 자리에 몇 번이고 갈 수 있기 때문이었다.
(즉, 왼쪽으로 갔다가 오른쪽으로 갔다가 다시 왼쪽으로 왔다가 다음에는 왼쪽으로.. )
생각해보니 터렛이 90도씩 도니까 결국 4가지의 상황만 있는거다. 이 상황을 저장해두고 길찾기에 써먹어보자.
* 4가지 상황에 대해 스냅샷을 만들어놓자.
- 터렛을 회전시킨다.
- 레이져를 쏜다 => 어딜 가면 황천길 가는지 체크
이제 가보자
LOOP:
- 큐에서 이동정보를 꺼낸다.
- 위, 아래, 왼쪽, 오른쪽 으로 갈 수 있을까? 체크한다.
- 이동 가능한 곳은 큐에 넣는다.
예선문제
https://www.facebook.com/hackercup/problems.php?round=742632349177460
문제풀이
https://www.facebook.com/notes/1043281905687710
'알고리즘 > 대회후기' 카테고리의 다른 글
Facebook Hacker Cup 2017 Qualification Round & Round1 (0) | 2017.01.16 |
---|---|
Facebook Hacker Cup 2015 Round 1 (0) | 2015.01.24 |