안녕하세요 :) 진자이입니다. CODING TEST 카테고리에서는 코딩테스트를 준비하며, 공부했던 내용을 하나씩 기록해보려고 해요. 그 시작으로, 이코테 파이썬을 공부했던 내용을 남겨볼게요 :)
코딩 테스트 개념과 배경
코딩 테스트 ‘기업/기관에서 직원이나 연수생을 선발하기 위한 목적으로 시행되는 일종의 문제 풀이 시험’
백준 : ‘https://www.acmicpc.net’ 코드업 http://codeup.kr 프로그래머스 https://programmers.co.kr
온라인 코딩 테스트
보통 기업에서는 온라인 저지 시스템을 별도로 구축하여 제공하거나, 백준 온라인 저지 혹은 프로그래머스 같은 온라인 저지 서비스에 문제를 출제한 뒤 응시자가 해당 시스템에서 응시하도록 한다. 정해진 시간에 응시자가 접속해 소스코드 형태로 작성하여 제출하면 온라인 저지 서비스가 정답 여부를 알려주고 점수를 부여한다. 제출 횟수 제한이 있을 수 있으니 주의해야 한다.
인터넷 검색을 허용하는 경우가 많아서 높은 성적을 받을 확률이 높다. 하지만, 참가자들이 제출한 소스코드를 대조하여 부정행위를 저지른 사람이 있는지 확인하므로, 인터넷에서 찾아도 자신만의 코드로 표현하는 작성 능력도 중요하다.
오프라인 코딩 테스트
응시자가 시험장에 방문해서 치르는 시험이다. 대체로 인터넷 검색이 허용되지 않으며, 회사가 제공하는 환경에서 바로 시험에 응시한다. 때에 따라, 응시자가 자주 사용하는 소스코드를 가져올 수 있도록 허용하는 경우도 있으므로 기관이 규정하는 바에 맞게 테스트를 준비하면 된다.
코딩테스트 준비 사이트
코드업
난이도가 낮은 문제가 많아 처음 공부하는 사람에게 적합하다. 문제 풀이를 시작하려는 독자라면 코드업 사이트의 [문제] - [문제집] - [기초 100제] 를 꼭 풀어보자. 알고리즘 문제 풀이에서 자주 사용하는 기본 코드 유형과 관련된 문제라서 문법이 떠오르지 않아 풀지 못하는 일은 적을 것이다. 코딩 테스트에서 많은 비중을 차지하는 구현 문제를 해결하는 데 큰 도움이 된다.
백준
전형적인 코딩 테스트 형식(ACM-ICPC형식)을 따르고 있으며, 단계별 문제 풀이도 많다. 백준 온라인 저지의 문제 순서는 난이도와 무관하므로 순서대로 풀면 초보자 입장에서는 예상치 못한 난이도에 좌절할 수 있다. 그럴때는 백준 온라인 저지 문제들에 대해 알고리즘 분류 태그와 난이도를 부여하는 solved.ac 프로젝트의 도움을 받자. 크롬에서 solved.ac 확장 프로그램을 설치하면 난이도 정보를 쉽게 확인할 수 있다. 백준 온라인 저지의 장점은 [문제] - [알고리즘 분류] 탭으로 이동하면 유형별 알고리즘을 선택하여 풀 수 있다. 삼성SW에 지원한다면 관련 문제를 확인하자
프로그래머스
프로그래머슨는 국내 알고리즘 학습 사이트로 2017년부터 2020년 상반기까지 카카오 공채 문제를 모두 제공하고, 소스코드를 제출하면 정답 여부를 확인할 수 있다. 해당 문제를 풀지 못해도 다른 사람들의 풀이 코드를 열람할 수 있어 장점이다. 카카오를 대비한다면 꼭 확인하자
SW Expert Academy
SW 익스터프 아카데미는 삼성에서 공식적으로 제공하고 있는 알고리즘 학습 사이트이다. 상시 SW 역량테스트 제도를 운영하고 있어 본인의 실력을 가늠할 수 있다. 가장 난이도가 낮은 A형에 응시해보는 것을 추첞나다.
삼성전자의 경우 DFS/BFS를 활용해야 하는 탐색과 시뮬레이션 문제 유형을 자주 출제한다. 삼성전자 IT직군의 공채에 등장하는 알고리즘 문제 유형도 상시 SW역량테스트 A형문제와 유사하게 출제되므로 상시 SW역량테스트 A형을 모의고사 치르듯 실력을 확인하고 부족한 부분을 확인해보자.
파이썬? C++
어차피 파이썬으로 준비할 거라 C++에 대해서는 적지 않겠다. 실행 시간이나 메모리 관리가 매우 중요한 문제 유형이 아닌 이상 웬만한 문제는 파이썬을 활용하면 짧은 코드로 표준 라이브러리만 활용하여 프로그래밍할 수 있다. 채점 시스템이 파이썬3뿐만 아니라 PyPy3를 지원한다면 대체로 코드가 더 빠르게 실행된다.
문제를 푸는 입장에서 컴파일러의 동작까지 유추하는 것은 어렵기 때문에, 파이썬3으로 제출했던 코드를 PyPy3으로 변경해서 제출하거나 그 반대로 실행해보든 해라.
온라인 실습 환경에서 공부하기를 추천한다. 실제 코딩 테스트를 치르는 환경이 온라인 형태의 IDE일 가능성이 높기 때문이다. 온라인 코딩 테스트는 주로 웹 브라우저에서 소스코드를 작성하여 제출한다. 처음부터 온라인 IDE를 사용해라.
온라인 IDE 종류
리플릿 : 가장 유용한 무료 개발 환경으로 추천한다. 로그인한 다음 사용하면 다른 개발자와 함께 동시에 코딩할 수 있는 협업 기능을 사용할 수 있다. Python Online Compiler & Interpreter
파이썬 튜터 : 개인에게 꼭 맞는 튜터와 같은 기능을 제공한다. 소스코드를 입력한 다음 [Visualize Execution] 버튼을 누르면 소스코드를 단계별로 실행할 수 있다. 소스코드가 실행하는 동안 실제로 메모리에 데이터가 어떻게 부여되는지를 시각적으로 보여준다. http://pythontutor.com/visualize.html
최신 출제 경향과 준비 방향
응시생에게 2~5시간 동안 여러 개의 알고리즘 문제들을 풀도록 한다는 공통점이 있으며, 정확한 알고리즘을 사용하여 얼마나 빠르게 많은 문제를 풀었는지를 토대로 순위를 매긴다.
IT업계에서는 알고리즘 문제를 푸는 방식을 제외하고도 요구사항에 맞는 소규모 프로그램을 개발하는 유형, 논문이나 책을 읽고 관련 프로그램을 작성하는 유형 등 다양한 코딩 테스트 유형이 존재한다.
그럼에도 알고리즘 코딩 테스트가 가장 대표적인 이유는, 평가하기 가장 용이하고 문제 해결 능력을 평가하는 데 있어 알고리즘 문제만큼 좋은 것이 없기 때문이다.
알고리즘은 매우 높은 사고력이나 어려운 알고리즘 기반의 지식을 요구하지 않는다. ‘기초 알고리즘’에 기반하는 문제가 주로 출제되는데, 출제 빈도가 높은 문제는 그리디(Greedy), 구현(Implementation), DFS/BFS 를 활용한 탐색 문제이다. 특히, 기초 그리디 문제 유형은 문제 해결 방법만 떠올린다면 간단하게 구현할 수 있어 자주 등장한다.
또한, 상대적으로 높은 사고력을 요구하는 다이나믹 프로그래밍이나 그래프 이론 문제도 출제된다. → 다만, 출제 난이도가 높지는 않다.
대기업은 어떻게 문제를 낼까?
카카오 공채 코딩 테스트는 ‘그리디 혹은 구현 유형의 문제’를 다수 확인할 수 있다. 카카오 코딩 테스트는 문자열을 처리해야 하는 구현 문제를 자주 출제하는 것으로 유명한데, 문법을 안다고 해서 쉽게 해결할 수 없으며 다양한 케이스를 고려해야 안정적으로 만점을 받을 수 있는 문제들이 주로 출제된다.
삼성전자는 문제를 바르게 읽고 예외 상황을 적절히 처리하는 방식으로 소스코드를 작성하는 유형이 가장 많이 출제되었다는 후기가 많다. 문제 유형이 모든 상황을 고려해야 하는 완전 탐색 문제가 많이 출제된다. 요약하면, 완전탐색, DFS/BFS, 구현 유형의 문제를 가장 선호한다.
대부분의 알고리즘 대회 및 코딩 테스트에서는 상위 5% 미만의 사람만 문제를 전부 풀 수 있으며, 전체 문제 중에서 절반가량을 정확히 해결할 수 있다면 합격할 수 있다.
알고리즘 대회 수상 경험이 있는 응시자는 합격권에 있는 경우가 많은데, ‘국제 알고리즘 대회를 기준으로 설명하면 코드포스 블루 이상, ACM-ICPC 서울 지역 대회 본선에 안정적으로 진출할 수 있는 정도라고 한다. 하지만, 알고리즘 대회와 기업 코딩 테스트는 사뭇 다르다. 목적이 다르기 때문이다.
취업에 필요한 코딩 테스트를 준비한다면 코딩 테스트에 출제되었던 문제 유형을 확인하고, 코딩 테스트에 자주 출제되는 유형 위주로 학습을 진행하는 것이 유리하다.
'REVIEW > CODING TEST' 카테고리의 다른 글
BFS/DFS 개념 정리 (0) | 2023.06.30 |
---|---|
구현(implementation) 총 정리 (0) | 2023.06.29 |
그리디(Greedy) 개념 정리 (0) | 2023.06.23 |
복잡도(Complexity) 개념 총 정리 (0) | 2023.06.23 |