시험을 위한 프로그래밍: 고득점을 얻는 Python 답안
시험에서 만점을 따는 Python 코드를 작성하는 방법 — 구조, 엣지 케이스, 압박 상황에서의 시간 관리.
시험 채점자는 디버거로 코드를 20분 동안 실행하지 않는다. 한두 번 읽고 채점표와 비교한다. 채점표를 무시하는 작동하는 솔루션도 감점을 받을 수 있고, 모든 확인 항목을 맞춘 약간 덜 정교한 것이 더 높은 점수를 얻을 수 있다. 시험을 위해 Python을 작성하는 것은 실제 프로젝트를 위해 Python을 작성하는 것과는 다른 기술이며, 별도로 연습할 가치가 있다.
문제를 두 번 읽기 전에 채점표를 먼저 읽어라
AP CS A 스타일 자유 응답 문제, 대학 중간고사, 코딩 부트캠프 평가 같은 대부분의 프로그래밍 시험은 부분 점수 규칙을 공개한다. 전형적인 채점표는 "명시적 루프 구조 1점, 올바른 반환값 1점, 빈 리스트 경우 처리 1점"처럼 보인다. 정답을 얻지만 명시적 루프를 건너뛴 조밀한 한 줄 코드를 작성하면, 출력이 올바르더라도 일부 채점자는 감점할 것이다.
아무것도 입력하기 전에 채점자가 따로 확인할 가능성이 있는 항목을 파악하라:
- 함수 서명이 요청된 것과 정확히 일치 (이름, 매개변수 순서, 반환 타입)
- 재귀가 예상되면 기본 경우와 재귀 경우
- 루프 경계 (off-by-one 오류는 가장 흔한 감점 원인)
- 엣지 케이스: 빈 입력, 단일 요소 입력, 음수, 중복
먼저 주석으로 작성하라. # handle empty list, # base case: n == 0. 10초가 소요되며 채점자가 특별히 찾는 경우를 놓치지 않음을 보장한다.
부분 점수가 보이도록 코드를 구조화하라
"리스트에서 두 번째로 큰 숫자를 반환하는 함수를 작성하라"는 두 가지 답안을 비교하라:
def second_largest(nums):
return sorted(nums)[-2]
def second_largest(nums):
if len(nums) < 2:
return None
largest = second = float('-inf')
for n in nums:
if n > largest:
second = largest
largest = n
elif n > second and n != largest:
second = n
return second
첫 번째는 잘 형성된 입력에서는 올바르지만 두 개 미만의 요소가 있는 리스트에서 충돌하고 [5, 5, 3]처럼 중복된 경우 잘못된 답을 준다 (5를 반환하는데 사양에 따라 틀릴 수 있음). 두 번째는 더 길지만 모든 채점표 항목 — 엣지 케이스, 올바른 로직, 올바른 반환 — 이 명시적이고 채점자가 확인할 수 있는 자신만의 줄을 얻는다. 제한 시간 시험에서, 두 번째 버전은 타이핑 시간이 더 걸리더라도 거의 항상 더 높은 점수를 받는다.
성급하게 최적화하지 말되 명백한 버그를 남기지도 말아라
시험 문제는 직접적으로 명시되지 않는 한 Big-O 지식을 거의 테스트하지 않는다. 프롬프트가 "중복을 찾는 함수를 작성하라"고 말하면, O(n²) 중첩 루프는 프롬프트에서 큰 입력을 지정하거나 효율적인 솔루션을 요청하지 않는 한 괜찮다. 요청되지 않은 집합 기반 O(n) 접근법으로 변환하는 데 시험 시간을 쓰는 것은 돌아오지 않을 시간이다.
그렇다 하더라도 채점표와 관계없이 항상 감점을 받을 오류가 있다:
==대신is를 일관성 없이 사용하여 로직 버그 야기 (Python 시험에서는 드물지만 비교가 많은 문제에 나타남)- 리스트를 반복하면서 변경 —
for x in lst: lst.remove(x)는 사일런트하게 잘못된 출력을 내는 전형적인 시험 함정 return빠뜨리고 대신 출력 — 많은 자동 채점자는 반환값을 확인하며 stdout은 아님range()에서 off-by-one —range(len(nums))vsrange(len(nums) - 1)은 작성할 때마다 두 번 확인할 가치가 있다
제출하기 전에 코드를 손으로 추적하라
종이 시험과 대부분의 브라우저 내 코딩 시험에서, 코드를 실행할 수 없다. 작은 예제를 하나 선택하고 변수 값을 쓰면서 줄 단위로 추적하라. 이것은 2분 내에 로직 오류의 약 80%를 찾으며, 남은 시간으로 할 수 있는 가장 효율적인 작업이다.
특히 재귀 함수의 경우, 최소 두 레벨 깊이를 추적하고 기본 경우 도달을 명시적으로 작성하라. 채점자는 종종 기본 경우가 올바르게 종료됨을 보여주는 것만으로 1점을 주며, 이는 재귀 경우가 올바른 것에 대한 점수와 별개다.
시간을 사후 생각이 아닌 자원으로 관리하라
자유 응답 섹션이 세 개의 부분 문제에 걸쳐 9점이라면, 대략 동일한 시간을 할당하고 그 예산을 초과하여 막히면 이동하라 — 거의 완료되었지만 거의 올바른 부분 (b)는 완벽한 부분 (a)와 빈 부분 (c)보다 더 많은 원점을 가치한다. 로직을 완성할 수 없더라도 올바른 서명을 가진 스텁 함수와 pass 또는 추측을 작성하라; 올바른 서명만으로도 때로 자체로 채점표 1점이다.
시험실 밖에서 깨끗하고 테스트 가능한 Python을 작성하는 것과 이 문제에 끊임없이 나타나는 데이터 구조에 대한 자세한 정보는 Korra Studio의 관련 Python 및 Computer Science 세그먼트를 확인하라.
AI 도움을 받아 작성했으며, Michal Pilch(CISSP), Korra Studio에서 검토 및 게시했어요.
이것은 Korra Studio 나레지베이스의 한 노트예요. 플랫폼은 모든 주제를 1-to-1 멘토링과 함께 제공해요.
무료로 시작하기arrow_forward