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!
'책 정리 > Programming Challenges : 알고리즘 트래이닝 북' 카테고리의 다른 글
문제 31, 셸 정렬, ShellSort, PC/UVa ID : 110407/10152 (0) | 2011.02.26 |
---|---|
문제 30, CDVII, PC/UVa ID : 110406/10138 (0) | 2011.02.22 |
문제 29, 구두 수선공 문제, Shoemaker's problem, PC/UVa ID : 110405/10026 (0) | 2011.02.13 |
문제 28, 낮잠 오래 자기, Longest Nap PC/UVa ID : 110404/10191 (0) | 2011.02.10 |
문제 27, 다리, Bridge, PC/UVa ID : 110403/10037 (0) | 2011.02.08 |
문제 25, 비토와 친척들(Vito's Family), PC/UVa ID : 110401/10041 (0) | 2011.01.30 |
문제 24, Fmt, PC/UVa ID : 110308/848 (0) | 2011.01.30 |
문제 23, 더플릿, Doublets, PC/UVa ID : 110307/10150 (2) | 2011.01.22 |
문제 22, 파일 조각, File Fragmentation, PC/UVa ID : 110306/10132 (1) | 2011.01.08 |
문제 21, 자동 심사 스크립트, Automated Judge Script, PC/UVa ID : 110305/10188 (0) | 2011.01.06 |
최근댓글