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)

참고 링크

이야기

fmt 구현이 이 문제의 핵심이다. 텍스트를 읽고 읽은 텍스트를 최대한 72 글자를 넘지 않고 가까운 라인으로 재포맷하여, 출력 하라.

프로그램의 입/출력

  • 입력에 공백이 있으면, 새로운 라인으로 시작 하며, 새로운 라인 전 라인의 끝에는 공백이 없고, 새로운 라인의 시작에도 공백이 없어야 한다.
  • 입력된 줄바꿈 문자들 중 빈줄에 있는 줄바꿈 문자, 공백에 있는 줄바꿈 문자를 제외한 줄바꿈 문자는 생략할 수 있으며, 생략 될 때 스페이스로 바꾸어야 한다.

  • 출력 되는 줄의 맨 뒤에 있는 스페이스는 모두 삭제 한다.
  • 72 글자가 넘는 단어가 있으면, 한줄에 그 단어 하나만 출력한다.

예외 상황

  • 매번 입력을 치기 귀찮아서, input.txt 파일과 리포맷 후의 파일 output.txt 을 만들어서 검증했다.
  • 입/출력은 편한데로 하면 된다.

맛보기 코드

맛보기 사진


여담

  • 루아 디버깅 하다가 피말리는 줄 알았다.
  • 루아 API 만으로 해결하려고 노력했으나, 로직이 생각나지 않아서 루아이지만 C 스타일로 코딩했다.
    (예를 들어 문자열을 다시 배열 형태 접근을 가능하도록 바꾼다든지 ...)

  • 한 라인이 스페이스로만 있을 경우를 알기 위해선 라인단위로 파싱하는 방법밖에 생각나지 않아 프로그램을 도중에 다 바꾸어 버렸다.
  • if 문이 많아 쭐이도록 노력해 보았지만, .. 더 이상 생각 나지 않는다.

  • 그러고 보니, 나의 대부분의 코드는 직관력에 의해서 결정된다. 아직 좋은 건지 나쁜 건지 모르겠음

:wq

posted by 농사를 짓는 게임 프로그래머 최익필
TAG , , ,

댓글을 달아 주세요