SET 14 — 정답 및 해설 (긴 코드)¶
| 문항 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 정답 | ② | ① | ② | ② | ① | ② | ① | ② | ② | ③ |
1. 정답 ② True False True
양 끝에서 좁혀오며 비교: level·noon은 회문(True), hello는 아님(False). 핵심: 투 포인터 i, j와 while.
2. 정답 ① win lose draw
wins[rock]=scissors라 상대가 scissors면 승, paper면 패. 같으면 무승부. 핵심: 딕셔너리로 규칙(이기는 관계) 표현.
3. 정답 ② 111 9232
콜라츠 수열(27): 111단계 만에 1에 도달하며 도중 최댓값은 9232. 핵심: 진행 중 최댓값 갱신, 짝/홀 분기.
4. 정답 ② 3
합이 6인 쌍: (1,5), (7,-1), (1,5) — 인덱스 기준 3쌍. 핵심: j = i+1로 중복 없이 모든 쌍 검사.
5. 정답 ① 5 15
fib(5) = 5. 함수 호출은 매번 1씩 누적되어 총 15회. 핵심: 재귀 호출 횟수를 global 변수로 셈(중복 계산 비효율 확인).
6. 정답 ② 10 20 [30, 40]
큐(FIFO): 10·20·30 추가 → dequeue로 10(앞에서 꺼냄) → 40 추가 → dequeue로 20. 남은 것 [30, 40]. 핵심: pop(0)로 맨 앞 제거.
7. 정답 ① ([5, 10, 7], 3)
음수는 raise ValueError로, 변환 불가(abc)도 ValueError로 처리되어 무효 3건. 유효값 [5, 10, 7]. 핵심: 직접 raise한 예외도 같은 except가 처리.
8. 정답 ② 20
6! / (3! · 3!) = 720 / 36 = 20 (조합 ₆C₃). 핵심: math.factorial로 조합 수 계산.
9. 정답 ② [4, 4, 7, 7, 9, 9, 9]
지금까지의 최댓값을 매 단계 기록 → 한 번 9가 나오면 그 뒤로 계속 9. 핵심: 누적(running) 최댓값.
10. 정답 ③ 6 9 3
길이 3인 단어 6개(the·fox·the·dog·the·end), 전체 9단어, 등장한 길이 종류는 3·5·4의 3가지. 핵심: 길이를 키로 하는 집계.