책 정리/Programming Challenges : 알고리즘 트래이닝 북
문제 26, 팬 케이크, Stacks of Flapjacks, PC/UVa ID : 110402/120
최익필
2011. 2. 1. 00:48
PC/UVa ID : 110402/120
이 포스트를 만든 목적
- 생각 절차, 푼 방법, 고민거리 등을 기록하기 위해서 만들었다.
이 포스트의 준비물
- firefox4 beta10
- eclipse 3.6.1 + vrapper
- lua 5.1.4
참조 문헌
- 스티븐 스키에나, 미구엘 레비야 저. Programming Challenges: 알고리즘 트레이닝 북. 서환수 역.
Springer. 한빛미디어 초판 2쇄 2004.12.05. (문제 26, 팬 케이크, Stacks of Flapjacks, page 121)
참고 링크
이야기
프로그램의 입력/출력
- 프로그램은 한 라인에 팬케이크의 지름을 여러개 입력을 받는다. 각각의 팬케이크는 스페이스로 구분된다.
예) 1 2 3 4 5
- 입력 받은 팬케이크는 입력된 순서로 쌓여 있는데, 쌓여있는 팬케이크의 제일 위쪽이 입력된 숫자의 첫번째이다. 그러므로 마지막에 입력된 숫자가 쌓여 있는 팬케이크의 제일 밑에 있는 것이다.
- 이를 숫자로 표현하면 제일 밑이 1, 제일 위가 팬케이크의 총 갯수가 된다.
- 입력이 끝나면, 원래 쌓여진 펜케이크 순서를 출력하고, 다음 라인에 뒤집는 방법을 출력한다.
- 공백이 입력 될때까지 1 ~ 4 를 반복한다. 자세한 것은 사진 참조
맛보기 사진
맛보기 코드
여담
- 테스트 주도 개발 방법론을 사용해 봤다. 꽤 괜찮다. 버그도 많이 잡을수 있었고..
- 루아이기 때문에 테이블을 사용했고, 테이블을 사용했기 때문에 0번 인덱스를 사용할 수 없어 1번으로 보정했다.
- 개발 순서를 1. 뒤집는 함수 2. 필요한 인자 얻는 로직 3. 입력 순으로 하면 편할 것이다.
- 내 방식데로 다 만든 후에 답지를 봤는데, 내가 고민했던 부분을 없애 버린 로직(어디 부터 어디까지 뒤집을 것인가? 를 찾는 로직)을 보고 감동 받았다. 맛보기 코드로 만든 것은 이러한 영향을 반영한 것이다.
:wq!