코딩테스트/알고리즘 입문

Yeoonnii·2022년 8월 12일
1
post-thumbnail
post-custom-banner

코딩테스트란?

코딩테스트는 기초 알고리즘을 활용하여, 주어진 상황을 코드로 얼마나 잘 구현해낼 수 있는가가 관건
카카오나 삼성 등 가고자 하는 기업의 코딩테스트 문제들을 분석하고 반복하여 연습하는 것만이 방법

코딩테스트의 정의는 ‘주어진 시간동안 주어진 문제를 요구사항에 맞게, 프로그래밍하여 ACCEPT나 점수를 받는 시험’
문제를 받고, 문제에 서술된 상황을 바탕으로 모델링하고,
그 다음 절차적 사고에 맞춰 프로그램을 짜고 이를 코드로 구현 해야한다.
위에서 말한 3가지 역량을 제한 시간 안에 얼마나 효과적으로 보여줄 수 있는지를 확인하는 시험

코딩테스트에서 기업이 요구하고자 하는 역량

  • 추상화 (상황 분석)
  • 절차적 사고
  • 구현 능력

코딩테스트/알고리즘 문제 사이트

👉탑코더알고리즘튜토리얼 입문 추천
👉릿코드 입문 추천

👉코드업 기초 100제
👉백준 온라인 저지 삼성
👉코드포스 블루레벨 정도의 실력까지
👉프로그래머스 카카오
👉알고스팟
👉코딩도장
👉Hackerearth
👉Hackerrank

알고리즘 개념/문법

기본개념/문법

코딩테스트 문제풀이 과정

1) 문제 모델링
문제에서 제시하는 내용을 각각의 조건으로 어떻게 나눠야 하는지 감을 잡지 못하고 어려워 하는 거죠. 이 경우 아래의 3가지를 중점적으로 연습해보세요.

  • 수치 및 조건 정리하기
  • 전체적인 흐름 그리기
  • 입출력 예제 이해하기

2) 문제를 풀다가 계속 막히는 경우
코딩테스트를 통과하려면 많은 문제 유형을 풀어보면서 감을 익혀야 합니다. 그런데 문제 풀이 과정에서 계속 막히면 답답하죠. 문제를 풀다가 계속 막히는 것은 어쩔 수없이 경험치를 많이 쌓아야 해결되는 겁니다. 코딩테스트에 등장하는 필수 알고리즘은 무조건 암기하되, 알고리즘은 많이 알아두면 알아둘수록 도움이 될 거예요.

  • 필수 알고리즘은 암기하기
  • 누군가에게 설명하는 것처럼 말하면서 풀어보기
  • 모델링을 바탕으로 기능을 가볍게 적어보기

3) 풀이는 아는데 구현이 안 됩니다.
이런 어려움을 호소하는 학생들에게 가장 많이 하는 말은 ‘예제와 정답이 한 번에 나오길 기대하지 말자’라는 겁니다. 디버깅 연습을 부단히 해야 합니다. 개인에 따라 자체 id를 사용하거나 디버깅 툴을 활용이 어렵게 느껴질 수 있습니다. 그렇다면, print 함수를 이용해 디버깅하는 연습을 해보면 도움이 됩니다.

  • 디버깅 연습을 열심히 하고, print 함수를 활용하기
  • 쉽고 간단한 문제를 많이 풀어보며, 나만의 스타일 만들기
  • 억지로 최적화하지 말고, 출제자의 의도를 이해하는 연습하기

코딩테스트/알고리즘 공부 방법

  1. 시간을 정해놓고 고민해보고, 시간을 넘기면 답을 보며 익히기.
    처음에는 많은 풀이와 사실을 아는 게 중요
  2. 적정 난이도의 문제: USACO 추천
  3. 다른 사람의 코드를 참고!
    좋은 코딩법을 배울 수 있고, 코드를 읽고 이해하는 능력을 키울 수 있다.
  4. 풀이를 논리적으로 설명할 수 있을 때 직접 코딩해보기

책을 정독하고 나만의 언어로 개념을 알 때까지 구현
나의 언어로 설명할수 있는 정도의 능력이 필요! 👉 글이나 말로 설명가능 해야 함
알고리즘은 나만의 언어와 방식으로 추상화해서 기억
문제 익힐 때 직접 코드 짜서 확인 👉 반복 숙달, 디버깅 능력
문제 유형과 풀이 세분화 👉 (예: DAG에서 최장경로 구하기, 트리의 지름 구하기 등)

맞왜틀?

‘나는 맞았는데 왜 틀렸나요?’
아래의 원인 중 내가 범한 실수가 무엇이 있는지 생각해보며 연습해보시길 추천합니다.

  1. 제한 및 대소 관계 (이상, 이하, 초과, 미만 등)
  2. 예외 처리 (단, 없는 경우는 -1을 출력한다)
  3. 입력과 출력 (공백, 양식, 순서, 정렬의 유무)
  4. 시간 제한과 메모리 제한
  5. 출제자가 원하는 알고리즘을 썼는가
  6. 내가 생각한 로직대로 코드를 구현했는가
  7. 불필요한 반복문은 없는가
  8. 중복은 처리했는가

참고

post-custom-banner

0개의 댓글