| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- 컴포넌트 스캔
- 파이썬
- getreference
- BFS
- 스프링 컨테이너
- java
- 플랫폼 클래스 로더
- 어플리케이션 클래스 로더
- 객체지향
- 부트스트랩 클래스 로더
- 클래스 로더 계층
- 딕셔너리
- AWS SAA-C03 합격후기
- python list method
- 알고리즘
- 백준
- 다이렉트 레퍼런스
- 자바
- 코딩테스트
- python
- 자료구조
- 스프링
- 파이썬 문자열 메서드
- dfs
- 2026 AWS SAA-C03
- Spring
- aws saa-c03
- 파이썬 리스트 메서드
- stop the world
- 심볼릭 레퍼런스
- Today
- Total
클라우드 낚시꾼
[알고리즘] 코딩테스트 팁, 공부법 본문
코딩 테스트란 무엇인가

- 코딩 테스트는 누가 실시하는가?
아마 필자를 포함한 개발자 꿈나무들이 "어디에서 일하고 싶어요?"라는 질문을 들으면, 대부분 "네카라쿠배요!"라고 답할 것이다. 보통의 기업들은 스펙, 면접 등으로 유능한 인재를 선별한다. 하지만, IT 대기업은 조금은 생소한 방식으로 유능한 인재를 선별하는데 그것이 바로 알고리즘 코딩 테스트다.
- 코딩 테스트를 왜 실시할까?
코딩 테스트는 여러 가지 환경, 변수를 다 배제하고 문제를 해결하는 능력 자체를 평가하기 위해 실시한다. 기업 입장에서도 실무 환경에서 직접 프로그램을 개발하는 능력을 평가하고 싶을 것이다. 하지만, 그 환경이 회사마다, 사람마다 천차 만별이기 때문에 정확한 개발 능력을 평가하기 쉽지 않다.
코딩 테스트 공부법
코딩 테스트의 본질은 문제 해결력이다. 문제 해결력은 단기간에 발전하지 않으며, 타인이 아니라 본인이 주체가 되어야 생기는 능력이다.
그러므로, 꼭 아래의 규칙을 따르자.
- 문제 풀이법
- 문제를 읽고 꼭 스스로 먼저 풀어보자. (실패가 뻔히 보이더라도 50분 정도는 꼭 고민해보자.)
- 문제를 읽으며 문제에서 요구하는 것을(단서) 체크하자.
- 무작정 풀지 말고 입력 조건, 시간 복잡도, 공간 복잡도를 고려하여 풀자.
- 의사 코드로 간단히 알고리즘을 정리한 후 코딩 하자.
- 검토법
- 문제가 안 풀리거나 너무 이해가 안 가면 과감히 넘어가자.
- 내 답안을 모범 답안을 비교해보자.
- 내 답안을 여러 가지 형태로 수정해보자.
코딩 테스트 좋은 풀이
- 시간 복잡도, 공간 복잡도를 체크하자.
코딩 테스트 문제를 풀다 보면, "맞았는데 왜 틀렸지.."라는 말을 내뱉을 때가 있다. 일명 '맞왜틀'이라고 불린다. 시간 복잡도는 똑같은 결과를 얼마나 빠르게 처리할 수 있는 지에 대한 척도이다. 또한, 공간 복잡도는 실행하면서 메모리를 얼마나 사용하는지에 대한 척도이다.
우리가 "맞왜틀"을 시전할 때는 주로 문제에서 요구하는 시간 복잡도를 지키지 못 했을 때이다. 그러니 꼭 입력 조건을 확인하여 최악의 시간복잡도를 고려하여 문제를 해결하자.
- 가독성이 좋아야 한다.
가독성이 좋아야 하는 이유는 디버깅을 위해서다. 아무리 고수더라도 문제가 한 번에 풀리는 경우는 거의 없다. 이럴 때 어디서 문제가 발생했는 지를 빨리 파악해야 하는데 코드의 가독성이 좋지 않으면 이 과정이 길어진다. 그러니 가독성을 위해 아래 규칙을 지켜보자.
- 유의미한 변수를 사용하자.
- 변수명을 의미 없이 a,b,c,d ... 로 만들면, 그 변수가 어떤 값을 저장하고 있는 지 알기 힘들다. 김치 냉장고가 이름값해서 김치를 담고 있듯이, 변수명도 그 이름값을 살리자.
- 어떤 문제의 조건에 "입력 값이 1이면 종료해라."라는 조건이 있다고 가정해보자. 이때 1도 이왕이면 변수를 이용하자. 필자라면, "exitCode = 1"이라고 저장하여 종료 조건에 "exitCode" 변수를 이용할 것이다. 이런 사소한 것이 차이를 만든다.
- 무조건 짧은 코드가 좋은 것은 아니다.
- 숏코딩이 예쁘기는 하지만 간략화 가정에서 가독성이 떨어진다.파이썬에 엄청 능숙하지 않은 이상 문제를 풀기 전에는 일반 코드로 작성하고, 문제가 맞으면 숏코딩을 해보자.
- 모듈화
- 모듈화란 프로그램의 구성요소를 레고 블럭처럼 만들어서 프로그램의 의존성을 약화시키는 작업을 뜻한다.
- 알고리즘 문제를 풀때, 작업 단위를 함수로 분리시키는 모듈화 작업을 하면, 문제가 발생했을 때 각 함수 안에서 발생하므로 디버깅하기가 더 쉽다.
- 또한, 함수 이름 덕분에 더 가독성이 좋은 코드를 만들 수 있다.
마치며...
코딩 테스트는 사실 감이 굉장히 중요하다. 그러므로, 하루에 2문제 풀고 다음 날 0문제 푸는 것보다 매일 1문제씩 풀는 것이 더 효율적이다.
계속 그렇게 꾸준히 하다보면, 감이 생기기 마련이다. 파이팅!
'CodingTest > Algorithm' 카테고리의 다른 글
| [알고리즘] 시간 복잡도 분류와 점근적 분석 (0) | 2023.10.05 |
|---|---|
| [알고리즘] 시간 복잡도의 점근적 표기 이해(Big-O,Big-Omega,Big-Theta) (1) | 2023.10.05 |
| [알고리즘] BFS(너비 우선 탐색) 개념 (0) | 2023.10.04 |