2023년 4월 16일 오전 11시부터 2시간동안 진행된 PCCP 시험 후기를 간단히 작성해 둡니다. 문제 난이도에 따라서 2시간이라는 시간이 길다면 길고, 짧다면 짧은 시간이기에 아예 못 푸는 문제가 나오면 어떡하나 약간 걱정이 되긴 했지만, ‘풀 수 있는 문제는 실수 없이 다 풀자!’ 라는 마음가짐으로 임했습니다. 다행히 4문제 모두 프로그래머스 Lv. 2~3 정도 수준의 풀만한 문제들이었고, 1000점/1000점으로 첫 시험에 Lv. 5를 얻는 기분좋은 결과를 얻었습니다 아래에는 시험 환경과 문제 난이도를 고려한 시험 준비 방법 등을 정리해둡니다.
이런 성적표와
이런 인증서를 줍니다.
PCCP 시험 환경
외부인과의 접촉이 없는 조용하고 격리된 공간이어야 합니다. 저는 집에서 시험을 치렀습니다.
시험 20분 전 (오전 10:40) 까지는 온라인 시험장에 입실해야 합니다. 그 이후에는 입장이 안 되고, 반대로 화장실 등 자리 이탈도 안 됩니다.
웹캠, 핸드폰 카메라 총 2개의 카메라가 필요합니다. 웹캠으로는 시험을 치르는 정면 모습을 계속 촬영해야 하고, 핸드폰으로는 무릎까지의 제 모습과 모니터를 함께 촬영하고 있어야 합니다.
핸드폰 시험 감독 어플로는 모니토앱(https://monito.io/)을 사용했습니다. 프로그래머스를 운영하는 그렙에서 만든 어플이네요. 처음에는 신분증 확인으로 시작하고, 온라인 시험장에 입장하면 제공되는 QR코드를 어플에서 찍어서 컴퓨터-핸드폰 환경을 연동한 다음, 모니터를 중심으로 시험 환경을 360도 촬영하게 됩니다. 환경 검사가 완료되면 저를 찍을 수 있는 각도로 핸드폰을 거치해두어야 했습니다. 저는 책상 옆에 자바라 거치대를 하나 뒀습니다.
브라우저는 크롬으로 사용했고, 시험 내내 화면 전체를 공유한 상태여야 합니다.
IDE 사용이나 인터넷 검색, 외부 레퍼런스 활용은 금지됩니다. 시험 환경에 파이썬 공식 레퍼런스로 가는 링크가 있긴 했는데, 혹시나 해서 굳이 사용하지는 않았습니다.
온라인 시험장에 입장하면 ‘공지사항’, ‘감독관 채팅’ 두가지 채팅창을 볼 수 있습니다. 메시지가 오면 각기 다른 알림음으로 알려줍니다.
연습장은 아무것도 적혀있지 않은 A4용지 1장만 허용됩니다. 환경 촬영 때 A4용지가 보였는지 종이 앞뒷면을 핸드폰에 한 번 보여주라는 메시지가 와서 보여주니, 바로 확인 메시지가 와서 문제 없이 사용할 수 있었습니다.
시험 결과는 종료 후 30분 뒤에 확인할 수 있다고 안내가 왔는데, 실제로는 종료 직후 (13:00 정각) 확인 가능했습니다.
PCCP 대비를 위한 몇 가지 팁
문제 난이도는 프로그래머스 Lv. 2~3. 어렵게 생각하지 말자.
문제 내용에 관해서는 공유할 수 없지만, 전체적인 난이도에 관해서 정리하자면 1/2번 문제는 프로그래머스 Lv. 2정도, 3/4번 문제는 프로그래머스 Lv.2~3정도의 문제입니다. 잘 기억은 안 나지만 1번은 약 7분, 2번은 약 15분, 3번은 약 15분, 4번은 약 30~40분 정도 걸렸던 것 같네요.
특히 이번 시험에서 운이 좋았는지는 모르겠지만, 고차원적인 알고리즘이나 많은 최적화를 요구할만큼 문제의 크기가 크지 않아서, 처음에는 쉽게 접근하고 시간이 남으면 최적화에 신경을 쓰는 방법이 좋아보입니다.
실제로 저는 이번 (2023년 4월) 3번 문제를 우선 되는 대로 단순 DFS 탐색 방법으로 풀어두고, “다시 풀어볼 문제” 마킹을 해 두고 4번으로 넘어갔습니다. (실제 테스트 환경에서 제공되는 기능입니다.) 4번까지 풀고 다시 돌아온 다음, 최대 테스트케이스를 시도해보니 걱정했던대로 시간초과가 떴지만… 당황하지 않고 다시 처음부터 DP 답안을 작성하여 제출했습니다. 다행히 맞았습니다! 휴
평가 테스트케이스들은 공개되지 않는다. 테스트케이스 추가하기를 잘 활용하자!
이 부분은 제가 제일 걱정했던 부분입니다. 프로그래머스 문제들 풀면서 공부하다보면, 기본으로 제공되는 테스트 케이스들은 통과하는데 제출 후 평가 테스트케이스들은 (시간 초과 / edge case등의 이유로) 통과하지 못하는 경우가 부지기수입니다. PCCP는 “코드 제출하기” 버튼을 눌러도 평가 테스트케이스들을 다 통과했는지 알 수가 없기에, 보다 꼼꼼하게 edge case들을 검토해야 하고, 코딩 잔실수 없이 집중하면서 작성하는 것이 중요하다고 느꼈습니다.
저같은 코딩테스트 초심자에게는 가혹한 환경이지만.. 이번 시험에서 쏠쏠하게 써먹은 꿀팁 아닌 꿀팁은 바로 “테스트 케이스 추가하기”를 활용하는 것이었습니다. Input과 output을 형식에 맞추어 잘 구성해서 기본 테스트 케이스에 넣어둔 뒤 코드 업데이트 시마다 잘 작동하는지 간이로 테스트해볼 수 있는 기능인데, 시간이 가장 오래 걸리는 최악의 테스트케이스를 구성해서 만들어서 넣어두면 좋습니다.
다만 이런 테스트 케이스들은 크기가 무지 크므로, 손으로 적을 수는 없습니다. 그래서 저는 테스트 케이스를 만들어서 print로 출력하는 코드를 일단 만들어서 돌려 두고, 출력 값을 복사-붙여넣기 하는 방법을 썼습니다 이 방법으로 최악 케이스에 대해서 내 코드가 감당 가능한 시간 내에 돌아가는지 확인해보면 좋겠지요.
후기
문제 퀄리티가 좋다는 후기들을 먼저 보고 시험에 응시했는데, 실제로 문제들이 다 재밌고 풀만한 문제들이었습니다. 더 좋은 풀이가 무엇이었을지 한 번 더 생각하게 하네요. 시험 플랫폼이나 환경 자체도 크게 거슬림 없이 원활하게 진행되어 만족도가 높았습니다. 화장실 이동 금지나 A4용지 1장만 사용 등의 조금은 엄격한 제한 조건들은 온라인 원격 감독 시험의 특성 상 어쩔 수 없는 부분이었다고 감안할 수 있었습니다. 2년이 지나 성적이 만료되면 다시 응시해야겠습니다!