Python/이것이코딩테스트다with파이썬

1강 :: 코딩 테스트란 무엇인가?

묘걍 2023. 9. 7. 20:01

코딩 테스트의 유형

1. 온라인 코딩 테스트

    - 인터넷 활용해 프로그래밍 역량 평가

    - 대체로 타인과 문제 풀이를 공유하지 않는 선에서 인터넷 검색 허용

2. 오프라인 코딩 테스트

    - 시험장에 방문하여 치르는 시험

    - 대체로 인터넷 검색이 허용되지 않고 회사에서 제공하는 컴퓨터 환경을 이용함

▶️시험이 여러 단계로 나누어질 경우 온라인 → 오프라인 시험 혹은 코딩 테스트 → 면접 식으로 이루어짐

 

온라인 저지 (Online Judge)

- 해외

     코드포스 https://codeforces.com/

     탑코더 https://www.topcoder.com/

     릿코드 https://leetcode.com/

     코드셰프 https://www.codechef.com/

- 국내

     백준 온라인 저지 https://www.acmicpc.net/

     코드업 https://codeup.kr/

     프로그래머스 https://programmers.co.kr/

     SW Expert Academy https://swexpertacademy.com/main/main.do

🌟백준, 릿코드

- 초보자 = 코드업

 

알고리즘 문제 풀이 방식 코딩테스트에서 가장 유리한 프로그래밍언어?

C++ → python → Java → C → ...

- C++ 는 실질적인 메모리 관리 측면에서 자유도가 높고 실행 속도가 빠르다

- python은 짧고 간결한 코드와 다양한 표준 라이브러리 덕분에 사용이 편리하다

   알고리즘 대회가 아니라 일반 기업의 코딩테스트에 적합

- Java는 국내 프로그래머들이 많이 쓰는 언어 중 하나

   C++에 비해 수행시간이 느린 편, python에 비해 코드가 긴 편 → 코딩테스트에 상대적으로 불리

   평소에 배워온 언어라면 선택

 

프로그램 개발 방식의 코딩 테스트에서 가장 유리한 프로그래밍 언어?

python → Java → C ++ → C → kotlin → ...

- 온라인 코딩 테스트가 치뤄진 이후에 지원자의 수가 많이 좁혀진 다음에 자주 사용되는 테스트 방식

- 기한을 주고 그 기한 내에 특정 기능을 하는 프로그램을 개발해와야 하는 프로그램 개발 과제형

   혹은 특정 장소에 모여서 특정 시간 동안 문제에서 제시된 요구사항을 만족하는 프로그램 개발

 

python의 특장점

- 어떠한 서버의 API를 호출하는 등의 다양한 통신 라이브러리를 활용해야하는 경우가 많아 그런 측면에서 python이 유리한 언어이다

- 특히 python은 특정 서버에게 요청을 보내는 request 라이브러리, 서버에서 반환된 json 형식의 데이터를 쉽게 파싱할 수있는 json라이브러리 등이 표준 라이브러리로 제공되어 상대적으로 유리하다

- java언어를 사용해 android 앱 개발을 하거나 특정 언어를 반드시 이용해야하는 일부 상황을 제외하고는 python이 유리하다

 

온라인 코딩 테스트를 위해

온라인 개발 환경에 적응하기

리플릿 https://replit.com/languages/python3

- 별도의 회원가입 없이도 코드 실행 및 결과 확인이 가능하다

- 다른 사람에게 공유도 쉽다

 

코드 실행 과정 확인하기

파이썬 튜터 https://pythontutor.com/python-debugger.html#mode=edit

 

오프라인 개발 환경

파이참 https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows 

- python을 활용하는 다양한 데모 프로그램에서도 많이 사용됨

- 파이썬으로 문제 풀 때 디버깅 및 오프라인 작업을 원할 경우

굳이 파이참을 권하지 않는 이유

     - 일반적으로 온라인 코딩 테스트에서는 소스 코드를 단 하나의 파일로 제출

     - 일반적인 개발과 알고리즘 코딩 테스트 코드 작성 방식이 다르긴 함

 

C, C++

- Dev C++ https://sourceforge.net/projects/orwelldevcpp/files/

 

자신만의 소스코드 관리하기

- 자주 사용하는 알고리즘 코드를 라이브러리화 하면 좋다

- 팀노트: 알고리즘 문제 해결을 위한 자신만의 알고리즘 노트

     - 국제 알고리즘 대회 같은 경우 3명 정도의 인원이 한 팀 → 실제 오프라인 본선 대회에서는 그 팀에서 자주 사용하는 알고리즘 코드를 특정 분량까지 가져올 수 있도록 함

- 각 유형별로 문제를 풀다보면 유형에 따라서 비슷한 코드 형식을 많이 사용하게 된다, 온라인 코딩 테스트 시 도움이 될 것

- 예시 https://github.com/ndb796/Python-Competitive-Programming-Team_Notes

   인데 안 나온다...

 

경향

2020년 기준 대부분의 대기업이 알고리즘 코딩 테스트 시행

2 ~ 5시간 정도 주어지며, 여러개의 정해진 알고리즘 문제를 풀도록 함

출제 빈도가 높은 유형

- 그리디 (쉬운 난이도)

- 구현

- DFS/BFS를 활용한 탐색

 

- 하나를 빨리 푸는 것 보다 모두 맞추는 게,,

 

출처 : https://youtu.be/Mf0pYO8VAZk?si=GFEFQSrq_6mzhrCj