알고리즘

코딩 테스트 준비하기 전에 봐야할 글

VIPeveloper 2023. 7. 5. 14:33
728x90
반응형

코딩테스트 개요 확인 및 주의사항

  1. 코딩테스트란?
    • 지원자가 알고있는 자료 구조와 알고리즘 등을 활용 → 문제해결능력평가하는 시험
    • 제한 시간 내 푼 문제 개수 + 시간으로 평가 → 빠르고 정확하게 풀어야 한다.
  2. 보는 이유
    1. 문제해결과정
      • 주어진 문제를 정확하게 파악하는것이 중요
        • 요구하는 방향으로 문제를 해결하려고 하는가
    2. 똑같은 결과지만 빠르고 효율적으로
      • 코드의 실행 시간에도 제약이 있다. → 빅오를 배우자.
    • 개발자 실력 = 막연한 구현 (x) 효율적 설계 (o)
    • 기능 구현은 걍 필수다.
    • 빠르고 많이 (X) → 정확하고 효율적으로 (O)
  3. 코딩 & 디버깅
    1. 잘 짠 코드란?
      1. 가독성 + 효율성
        1. 가독성 : 코드 역할에 집중 → 메서드나 클래스로 분해하자.
        2. 효율성 : 메서드 → 사칙연산으로 해결
    2. 흔히 하는 실수
      1. 충분한 설계 없이 프로젝트 시작하기
        1. 설계가 없다면 이정표 없이 계속 진행하는 것과 같다.
        2. 초보자라면 계속 엎으면서 해보자.
    • 코드 작성 시 가독성 + 역할에 신경쓰자 → 단계별 문제 해결이 가능하다.
  4. 실전
    1. 사용자가 입력한 전화번호를 가진 사람들을 전화번호부에서 검색하는 기능 구현
      1. 내가 짠 로직
        1. 전화번호를 입력받는다.
        2. 리스트를 순회하며 검색한다.
        3. 있으면 true 리턴하며 검색결과를 알려준다.
        4. 없다면 false 리턴하며 새로 추가한다.
      2. 책에서 알려준 로직
        1. 전화번호는 어떤 형식으로 나타낼 것인가
          • 어떤 형식으로 적던지 일정하게 출력하도록 작성한다.
        2. 전화번호부에 저장되어있는 사람은 어떻게 나타내는가
          • 전화번호를 가진 사람을 설계하자.
        3. 사람과 전화번호는 어떻게 비교하는가
          • 리스트에 있는지 확인하기만 하면 된다.
          • 디버깅 후 에러 수정을 위한 코드 추가
        4. 전화번호부는 어떤 형식인가
          • 여러 사람을 담는 전화번호부를 설계하자.
      를 구현하도록 되어있다.
    • 단계별로 문제를 나누어 작성하자 → 불필요한 시행착오 줄어듦 → 결국 문제 빠르게 해결할 수 있게 됨.

느낀점

  • 코딩 테스트는 걍 문제풀이라고 생각했지만, 가독성 + 효율성을 검토하는 시험이라고 새롭게 정의할 수 있었다.
  • 단계별로 나누어 문제를 정확하게 풀어내는 것이 목적이다. → 이는 면접에서도 잘 활용될 수 있다.
  • 똑같은 결과를 내도 효율적으로 푸는 것이 좋다.
  • 똑같은 결과를 내도 가독성 있는 코드를 작성하는 것이 중요하다.
  • 문제를 풀기 전 충분한 코드 설계 과정이 필요하다. → 충분히 큰 그림을 그리고 시작하자. 쉬운문제부터 이걸 연습하는 습관을 들여야 겠다고 생각했다.
  • 실전편이 지렸다.
    • 전화번호를 입력받는 것부터 제대로된 설계가 필요하다니…!
      • 전화번호는 어떤 형식으로 나타낼 것인지 파악 → 나는 걍 01012341234 처럼 입력받을것이라 생각했는데, 이를 010-1234-1234 or 010 1234 1234 마냥 사용자 입력을 다르게 줄 수 있을 것을 생각을 못했다.
      • 사람과의 연관관계 또한 생각하지 못했다. 사람은 전화번호가 여러개 있을 수 있고, 이를 전화번호부 클래스를 만들어 구현한다는 생각을 하지 못했다.
728x90
반응형