PC/UVa ID : 110308/848
이 포스트를 만든 목적
- 생각 절차, 푼 방법, 고민거리 등을 기록하기 위해서 만들었다.
이 포스트의 준비물
- firefox4 beta10
- eclipse 3.6.1 + vrapper
- lua 5.1.4
참조 문헌
- 스티븐 스키에나, 미구엘 레비야 저. Programming Challenges: 알고리즘 트레이닝 북. 서환수 역.
Springer. 한빛미디어 초판 2쇄 2004.12.05. (문제 24, Fmt, page 106 ~ 107)
참고 링크
- http://www.lua.org/manual/5.1/manual.html - 루아 메뉴얼, 스트링 찾을려고
- http://uva.onlinejudge.org/external/8/848.html - 원문
이야기
fmt 구현이 이 문제의 핵심이다. 텍스트를 읽고 읽은 텍스트를 최대한 72 글자를 넘지 않고 가까운 라인으로 재포맷하여, 출력 하라.
프로그램의 입/출력
- 입력에 공백이 있으면, 새로운 라인으로 시작 하며, 새로운 라인 전 라인의 끝에는 공백이 없고, 새로운 라인의 시작에도 공백이 없어야 한다.
- 입력된 줄바꿈 문자들 중 빈줄에 있는 줄바꿈 문자, 공백에 있는 줄바꿈 문자를 제외한 줄바꿈 문자는 생략할 수 있으며, 생략 될 때 스페이스로 바꾸어야 한다.
- 출력 되는 줄의 맨 뒤에 있는 스페이스는 모두 삭제 한다.
- 72 글자가 넘는 단어가 있으면, 한줄에 그 단어 하나만 출력한다.
예외 상황
- 매번 입력을 치기 귀찮아서, input.txt 파일과 리포맷 후의 파일 output.txt 을 만들어서 검증했다.
- 입/출력은 편한데로 하면 된다.
맛보기 코드
맛보기 사진
여담
- 루아 디버깅 하다가 피말리는 줄 알았다.
- 루아 API 만으로 해결하려고 노력했으나, 로직이 생각나지 않아서 루아이지만 C 스타일로 코딩했다.
(예를 들어 문자열을 다시 배열 형태 접근을 가능하도록 바꾼다든지 ...)
- 한 라인이 스페이스로만 있을 경우를 알기 위해선 라인단위로 파싱하는 방법밖에 생각나지 않아 프로그램을 도중에 다 바꾸어 버렸다.
- if 문이 많아 쭐이도록 노력해 보았지만, .. 더 이상 생각 나지 않는다.
- 그러고 보니, 나의 대부분의 코드는 직관력에 의해서 결정된다. 아직 좋은 건지 나쁜 건지 모르겠음
:wq
'책 정리 > Programming Challenges : 알고리즘 트래이닝 북' 카테고리의 다른 글
문제 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 |
문제 26, 팬 케이크, Stacks of Flapjacks, PC/UVa ID : 110402/120 (0) | 2011.02.01 |
문제 25, 비토와 친척들(Vito's Family), PC/UVa ID : 110401/10041 (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 |
문제 20, 암호 깨기2, Crypt Kicker2, PC/UVa ID : 110304/850 (0) | 2011.01.04 |
문제 19, 공통된 변경 문자열, Common Permutation, PC/UVa ID : 110303/10252 (0) | 2010.12.31 |
최근댓글