PC/UVa ID : 110305/10188

이 포스트를 만든 목적

  • 생각 절차, 푼 방법, 고민거리 등을 기록하기 위해서 만들었다.

이 포스트의 준비물

  • firefox4 b8
  • eclipse 3.6.1 + vrapper
  • lua 5.1.4

참조 문헌

  • 스티븐 스키에나, 미구엘 레비야 저. Programming Challenges: 알고리즘 트레이닝 북. 서환수 역.
    Springer. 한빛미디어 초판 2쇄 2004.12.05. (문제 21, Automated Judge Script, page 102)

참고 링크

문제

  1. 자동 심사를 진행하기 위해서 제출된 풀이를 심사하는 자동화된 심사 스크립트를 작성하라.
    - 심사 방법은 다음과 같다
    1. 제출된 프로그램에 의한 출력 결과가 정답과 완벽하게 일치하는가?
        일치 한다면 Accepted 로 심사한다
    2. 제출된 프로그램에 의한 출력 결과중 정답에서 숫자와 숫자가 나온 순번만 일치 하는가?
        일치 한다면, Presentaion Error 로 심사한다
    3. 1번과 2번이 아닐경우, Wrong Answer 로 심사한다

  2. 프로그램은 먼저 몇 라인의 정답을 받을 것인지 양의 정수 100 미만의 수 N을 입력 받는다.
  3. N 라인 만큼 정답을 입력 받는다.

  4. 3번까지 되었다면, 5번으로 넘어 간다.

  5. 심사를 거칠 프로그램이 출력할 결과를 몇라인을 받을 건지 양의 정수 100 미만의 수 M을 입력 받는다.
  6. M 라인 만큼 결과를 입력 받는다.

  7. 6번까지 되었다면, 자동 심사 스크립트(Automated Judge Script)가 출력할 결과를 출력한다.
    - 결과를 출력 할 때 printf("Run #%d: %s", 입력 세트, 심사 결과) 로 출력 한다.

주의 사항

  • Presentaion Error 의 경우, 숫자의 위치가 고려 된다.
    - 예를 들어 정답 "15 0" 과 프로그램의 결과 "150" 를 심사하면, Presentaion Error 로 간주 한다.
       하지만 "15 0" 과 "1 0" 은 Wrong Answer 로 간주한다.

맛보기 코드 - 이 코드는 루아로 작성 되었다.

맛보기 사진

여담

  • 난 문제 이해하는데 시간이 꽤 걸렸다.
    - 문제만 20번 읽은듯

  • lua를 사용해서 문자열 정규표현식 사용하기 쉬워, 어려운게 없었다.
    - C/C++ 에선 숫자 누적 방법에 대해서 좀 신경써야 할듯

  • 문제가 이해가 안가면, 출력된 결과를 이용해 문제를 이해도 되겠다.
    - 출력 결과물은 원문 링크를 보는게 제일 도움 된다.

  • 1 byte 문자열에서 숫자란 문자  between('0' , '9') 이므로 숫자를 찾는건 어렵지 않다.

  • 정답 라인과 프로그램 출력 라인, 각각을 한 라인(table.concat)으로 만들어서, 반복문이 3개 밖에 없다.
    - 이 부분은 답지를 보고, 배웠(?)다.

  • 루아와 C/C++ 의 프로그래밍 차이점 중 배정문을 들수 있겠다.
    - 루아는 타입이 없어, 배정문 사용이 무척 자유롭다. 24, 27 라인 :)

  • 맛보기 사진에 Run #1 로 되어 있는데, 이 숫자중 #1 는 증가해야 된다. :)
    - 코드는 고쳤으나, 사진은 고치기 어려워 패스

:wq

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기