2025.05.22 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 1 PCCE 시험 개요와 LV3 등급 분석
2025.05.22 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 2: 변수, 자료형, 연산자 – Python 기본 문법 ①
2025.05.23 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 3 조건문 – 흐름 제어 기초
2025.05.24 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 4 반복문 – while, for, 중첩 반복
2025.05.24 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 5 리스트와 2차원 리스트 – 자료구조 입문
2025.05.25 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 6 함수 정의와 활용, 표준 라이브러리 (math, random)
2025.05.25 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 7 문자열 처리 – 인덱싱, 슬라이싱, 포매팅
2025.05.26 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 8 구현/시뮬레이션 문제 유형 분석 및 접근법
2025.05.27 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 9 디버깅 유형 및 오류 찾기 전략
실전 감각 기르기와 피드백의 중요성
공부의 마무리는 실제 시험과 유사한 환경에서 풀어보는 모의고사입니다. PCCE Lv3를 대비해서도 50분 안에 10문제를 풀어보는 연습이 필요합니다. 또한, 틀린 문제나 헷갈린 부분은 오답노트를 만들어 재정리해야 동일한 실수를 반복하지 않습니다. 이 파트에서는 1회분 모의고사처럼 예시 문제들을 종합적으로 풀어보고, 각 문제의 핵심과 오답 포인트를 짚어보겠습니다. 또한 시험 당일 유의사항과 마지막 정리 팁도 함께 제시합니다.
실전 모의고사 예시 및 풀이
아래에는 10문제로 구성된 PCCE Lv3 수준의 모의 연습 문제와 간략한 풀이/해설을 수록합니다. 실제 시험에서는 각 문제당 배점이 다를 수 있지만, 여기서는 고르게 다룰게요.
문제1: 간단 출력
문자열 "PYTHON"을 3번 연속 출력하는 프로그램을 작성하시오. (한 줄에 붙여서 출력)
- 해설: 이 문제는 기본 출력과 문자열 연산을 묻는 간단한 문제입니다. 파이썬에서는 "PYTHON" * 3으로 "PYTHONPYTHONPYTHON"을 만들 수 있습니다. 또는 print문 3번 써도 되나, 한 줄에 붙이려면 end="" 사용하거나 format으로 처리해야죠.
- 정답 코드 (Python): print("PYTHON" * 3)
- 오답 포인트: 개행이나 공백이 들어가지 않게 하는 것. print("PYTHON","PYTHON","PYTHON") 이렇게 쓰면 공백 생겨 오답입니다.
문제2: 합계 계산
1부터 20까지의 정수 중 짝수의 합을 구하여 출력하시오.
- 해설: 1~20 짝수 합 = 2+4+...+20. 산술적으로 2+4+...+20 = 2*(1+2+...+10) = 2*55 = 110. 코드로는 for 또는 sum(range(2,21,2)).
- 정답 코드: total = sum(range(2, 21, 2)); print(total)
- 오답 포인트: range(2,21,2)를 (2,20,2)로 잘못쓰면 20포함 안 해서 오답(90) 됩니다. Off-by-one 주의.
문제3: 문자열 다루기
문자열을 입력받아, 첫 글자와 마지막 글자를 제거한 결과를 출력하는 프로그램을 작성하시오. 단, 문자열의 길이는 2 이상이라고 가정한다.
- 해설: 슬라이싱으로 s[1:-1] 하면 해결. Python스럽게 한 줄로 가능.
-
# 정답 코드 s = input().strip()
print(s[1:-1]) - 오답 포인트: 혹시 strip() 때문에 앞뒤 공백 제거하면서 길이가 2 미만되는 경우? 조건상 2이상이라 괜찮지만, 공백 입력 고려할 필요. 또 길이 2일 때 s[1:-1] == ""임. 그런 경우 출력 없으면 이상하니, 문제서 2이상이라 했지만 2일땐 빈줄나옴. 그게 의도일까? 아마 "길이>=3"이어야 의미 있을 듯. 시험문제 명확히 봐야죠.
문제4: 조건 분기
정수를 하나 입력받아 양수, 음수, 0 중 어디에 해당하는지 출력하는 프로그램을 작성하시오.
- 해설: if-elif-else로 풀면 됩니다.
-
# 정답 코드 n = int(input().strip())
if n > 0: print("양수")
elif n < 0: print("음수")
else: print("0") - 오답 포인트: if n>0: ...; if n<0: ...; else: ... 처럼 독립 if 두 개 쓰면, n>0일 때도 else가 실행돼 버릴 수 있습니다. 반드시 elif로 연결해야 함. 또 출력 형식("양수","음수","0") 정확히. "음수입니다" 이런 거 쓰면 오답.
문제5: 반복문
자연수 N을 입력받아, 1부터 N까지 중 3의 배수이면서 4의 배수인 수들을 오름차순으로 출력하시오. 만약 그런 수가 없다면 "none"을 출력하시오.
- 해설: 3과 4의 공배수는 12의 배수. 1~N 중 12, 24, 36,...<=N 출력. 간단한 loop 혹은 수학적 접근. 없으면 none.
- 정답 코드:(마지막 공백은 크게 상관 없을 듯, 하지만 엄격히 하면 join쓰는게 나음)
-
# 정답 코드 N = int(input().strip())
found = False
for x in range(12, N+1, 12):
print(x, end=" ")
found = True
if not found:
print("none") - 오답 포인트: 조건이 "3의 배수이면서 4의 배수" = 12의 배수임을 파악 못 하고 if x%3==0 and x%4==0 식으로 해도 되긴함. but 이중배수 조건 틀리게 쓰면 버그. 예: if x%3 or x%4: (이건 논리오류)
또 none 출력 시 대소문자나 공백 실수하지 말아야 함.
마지막 출력 형식 - 계속 숫자 있다가 none 출력케이스 없으므로, else에서 print("none")하면 거기에 개행 안 넣어도 괜찮지만, 여기 넣었음.
문제6: 리스트 처리
정수로 이루어진 리스트를 입력받아 (리스트의 요소는 공백으로 구분), 그 중 최댓값과 최솟값을 차례로 출력하는 프로그램을 작성하시오.
- 해설: 파이썬 max, min 사용 가능. 입력은 "1 3 2 9" 이런 식으로 들어올 것.
-
# 정답 코드 arr = list(map(int, input().split()))
if not arr:
print("none") # 만약 입력 없으면 none 출력(없을 가능성?)
else:
print(max(arr), min(arr)) - 오답 포인트: list(map(int,...)) 잘 사용해야. 실수: map(int, input()) 처럼 하면 문자열 각 문자에 int 적용하려 해 에러. 반드시 input().split() 해야.
또 최댓값, 최솟값 순서 헷갈리지 않기. 문제 "차례로" 라고 했으니 최대 먼저, 최소 다음.
빈 리스트 예외처리도 혹시 몰라 함.
문제7: 문자열 변환
영어 소문자로 이루어진 문자열을 입력받아, 모음('a','e','i','o','u')을 모두 제거한 결과를 출력하시오.
- 해설: replace나 filter 사용. 'aeiou' 다 replace("", ""), or comprehension으로 필터링.
- 정답 코드:(또는 정규식 re.sub('[aeiou]','', s) 한 줄로도 가능. 하지만 정규식 모를 수 있으니 위처럼)
-
# 정답 코드 s = input().strip()
vowels = "aeiou"
result = ""
for ch in s:
if ch not in vowels:
result += ch
print(result) - 오답 포인트: 대소문자 구분 – 문제에서 "영어 소문자" 명시, 그러니 대문자 모음 안 빼도 됨.
replace를 쓸 경우 연쇄로 5번 호출해도 되고, for v in vowels: s = s.replace(v,"") 이렇게. 다만, 문자열 불변이라 5번 replace는 괜찮음.
중요한 건 모음을 정확히 정의, not in 잘 쓰는 것.
문제8: 구현 문제
5x5 2차원 리스트를 입력받는다 (총 5줄, 각 줄에 5개의 정수). 그런 다음 좌표 (r,c)가 주어진다 (0≤r,c<5). 이 리스트에서 주어진 좌표에 있는 값을 기준으로 상하좌우 네 방향에 이웃한 값들이 몇 개 있는지 출력하시오. (리스트 경계를 벗어나는 경우는 무시)
- 해설: 2D 배열, 특정 위치 주어지면 상(i-1,j), 하(i+1,j), 좌(i,j-1), 우(i,j+1) 네칸 중 존재하는 칸 개수 세기. 단 "값을 기준으로"라는 말이 약간 모호, 그냥 이웃한 값들의 개수를 세는 것. (혹시 그 기준 값과 같은 값 갯수? 라는 오해도 가능, 하지만 "몇 개 있는지" 라고만해 모호. 아마 이웃 칸이 몇 개인지=경계내에서는 최대 4, 모서리는 2, 변은 3)
-
# 정답 풀이 grid = [list(map(int, input().split())) for _ in range(5)]
r, c = map(int, input().split())
directions = [(-1,0), (1,0), (0,-1), (0,1)]
count = 0
for dr, dc in directions:
nr, nc = r+dr, c+dc
if 0 <= nr < 5 and 0 <= nc < 5:
count += 1
print(count) - 오답 포인트: 경계 체크 정확히. 특히 0이나 4에서 ±1이 범위 벗어날 때. dir 리스트 잘 설정.
문제 해석 정확히: "값을 기준으로"라는 표현이 애매하지만, 아마 그냥 상하좌우 이웃 개수라고 여겼음.
다른 해석 가능성: "기준값과 같은 값이 이웃에 몇개?" 라면 count if grid[nr][nc] == grid[r][c]. 그러나 그렇게 안 적힌 듯.
시험에선 이러한 모호함 거의 없도록 해야...
아무튼, direction loop에서 else 쓰면 안됨 (4방향 중 하나라도 out이면 else가 실행되므로 오히려 이상).
count 0부터 시작하기, sum(1 for ... in directions if in bounds) 로 한줄도 가능.
문제9: 디버깅 문제
다음 Python 함수 calc(a, b)는 두 수를 입력받아 a부터 b까지의 정수를 모두 더하여 반환하려 한다. 하지만 몇 가지 버그로 인해 올바른 결과를 반환하지 못하고 있다. 주석을 참고하여 코드의 빈칸 (1)~(3)을 채워버그를 수정하시오.
# 정답 풀이 |
def calc(a, b): # (a가 b보다 큰 경우 두 값을 교환) if a > b: temp = a a = b b = temp total = 0 for i in range(a, b+1): total += i # (1) 누락: 결과를 반환해야 함 _____ total # 예시: calc(5, 3) -> 5+4+3 = 12를 반환해야 한다. |
- 해설: 이건 빈칸 (1)에 return을 채우는 게 당연. (2),(3)는 없어보임. 아마 원래 문제엔 더 코드 있었겠지? 예를 들어 else나 합계 잘못?
여기선 (1) return total. - 오답 포인트: 디버깅 문제가 이렇게 나옴. 핵심 버그: return 누락. (또, 요구 예시 5,3->12 체크하면 위 코드 a>b swap해서 3..5 합 12, 맞음)
5+4+3=12 "역순 더하기" 검증하려고 swap logic도 중시.
if a>b: ...; (2) (3) 없으니 skip.
문제10: 종합 응용 문제
(좀 더 복잡한 실제 알고리즘 문제를 예상. 하지만 시간 많이 쓰니 간단 가정)
문제10: "1부터 N까지의 숫자 중에서 소수(prime number)만 오름차순으로 출력하고, 마지막에 소수의 개수를 출력하시오."
(입력은 정수 N)
- 해설: 에라토스테네스 체나 단순 체크. N 적당히 작을듯.
-
# 정답 풀이 import math
N = int(input().strip())
primes = []
for num in range(2, N+1):
is_prime = True
for k in range(2, int(math.sqrt(num))+1):
if num % k == 0:
is_prime = False
break
if is_prime:
primes.append(num)
if primes:
print(" ".join(map(str, primes)), len(primes))
else:
print("none 0") - 오답 포인트:
- 1은 소수 아님, 시작 2.
- sqrt(num)까지만 루프, +1 잊지 않기.
- 소수 없을 때 none 0 (ex. N<2 -> none 0, 혹 N=1).
- 출력 형식: 한 줄에 소수들 띄어쓰기로, 그리고 개수 (이렇게 이해).
만약 형식 달리 원하면 바꿔야. - 시간복잡도: N 커도 된다고 가정. Eratosthenes 쓰면 좋지만, Lv3에서는 sqrt로 해도 될만한 N일 것.
이 모의 문제들을 풀어본 후, 오답노트를 작성합니다. 오답노트에는 틀린 문제 번호와 틀린 이유, 교훈을 적습니다. 예를 들면:
- 문제5: range 범위 착각하여 20 포함 안 함 → off-by-one 오류. 교훈: range(시작, 끝+1, step)으로 써야 끝 포함.
- 문제8: "값을 기준으로" 뜻을 잘못 이해 → 문제 의도 파악 중요. 교훈: 지문 표현 정확히 읽을 것.
- 문제10: 1을 소수로 취급해버림 → 정의 실수. 교훈: 기본 개념(1은 소수 아님) 재확인.
이런 식으로 정리해두면 나중에 비슷한 문제에서 같은 실수를 하지 않겠죠. 특히 Level3 준비에서는 반복되는 실수 패턴을 줄이는 것이 합격의 열쇠입니다.
마무리 요약 및 실전 팁
마지막으로, 시험 당일을 위한 몇 가지 팁을 정리합니다:
- 시간 배분: 50분에 10문항이면 한 문제당 5분입니다. 하지만 난이도 편차가 있으므로, 쉬운 출력/구현 문제는 1-3분 컷하고, 어려운 디버깅/구현 문제에 10분 이상 쓸 수도 있습니다. 처음에 문제 전체를 훑어보고 풀기 쉬운 것부터 풀어나가세요.
- 입출력 실수 주의: 프로그래머스 플랫폼에서는 입출력 형식을 정확히 맞춰야 합니다. 불필요한 내용 출력 금지 (예: 디버깅 print 남겨두면 오답). 입력은 문제 설명대로 처리 (개수 주어지면 그만큼 읽기). 출력 예시와 똑같이 나오도록 공백/줄맞춤 신경쓰기.
- 언어 설정 확인: Python으로 응시한다면 IDE 세팅과 실행 방법 미리 숙지. 시험 환경에서는 아마 에디터+실행 결과 볼 수 있을 겁니다. 입력 예제로 직접 코드 돌려 결과 검증해보는 것도 가능하면 하세요.
- 사전 준비물: 특히 온라인 응시라면, 인터넷 끊고, 주변 방해 없게 설정, 화장실 미리 다녀오기. 오프라인 시험이면 필기도구, 신분증 챙기고, 입실 시간 준수.
- 긴장 관리: 모의고사를 충분히 해봤다면 실전에도 익숙할 겁니다. 모르는 문제 나와도 당황하지 말고 아는 부분부터 차근차근 채워나가세요. 디버깅 문제는 당황할 수 있는데, 차분히 변수 추적하면 의외로 간단한 실수가 원인일 수 있으니 끝까지 포기 말고 고민해보세요.
- 마무리 검토: 다 풀었으면 제출 전에 컴파일/실행이 잘 되는지, 예제 출력과 100% 일치하는지 확인! (사소한 오타나 대소문자 틀림, 공백 하나 차이도 오답 처리됩니다). 테스트 케이스 몇 개 머릿속으로 돌려보거나, 제공된 샘플 테스트를 실행해보세요.
이상으로 10편에 걸친 PCCE Lv3 준비 블로그 시리즈를 마칩니다. 각 편의 내용을 꼼꼼히 복습하고, 스스로 부족한 부분은 추가 학습하면 분명 좋은 결과가 있을 것입니다. 마지막까지 화이팅하시고, 시험장에서 평소 실력 발휘하시길 바랍니다. 🎉👍
참고 자료:
- 프로그래머스 PCCE 공식 가이드
- 파이썬 공식 문서 – 문자열 메서드, math/random 라이브러리 설명
2025.05.22 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 1 PCCE 시험 개요와 LV3 등급 분석
2025.05.22 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 2: 변수, 자료형, 연산자 – Python 기본 문법 ①
2025.05.23 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 3 조건문 – 흐름 제어 기초
2025.05.24 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 4 반복문 – while, for, 중첩 반복
2025.05.24 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 5 리스트와 2차원 리스트 – 자료구조 입문
2025.05.25 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 6 함수 정의와 활용, 표준 라이브러리 (math, random)
2025.05.25 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 7 문자열 처리 – 인덱싱, 슬라이싱, 포매팅
2025.05.26 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 8 구현/시뮬레이션 문제 유형 분석 및 접근법
2025.05.27 - [프로그래밍] - [PCCE] LV3 파이썬 완전정복: Part 9 디버깅 유형 및 오류 찾기 전략
'IT공부방' 카테고리의 다른 글
[프롬프트 엔지니어링] 2편: 좋은 프롬프트의 구조와 설계 원칙 (1) | 2025.05.30 |
---|---|
[프롬프트 엔지니어링] 1편: 프롬프트 엔지니어링 개요와 생성형 AI 작동 원리 (1) | 2025.05.29 |
[PCCE] LV3 파이썬 완전정복: Part 9 디버깅 유형 및 오류 찾기 전략 (0) | 2025.05.27 |
[PCCE] LV3 파이썬 완전정복: Part 8 구현/시뮬레이션 문제 유형 분석 및 접근법 (0) | 2025.05.26 |
[PCCE] LV3 파이썬 완전정복: Part 7 문자열 처리 – 인덱싱, 슬라이싱, 포매팅 (0) | 2025.05.25 |