728x90
반응형
코딩테스트 개요 확인 및 주의사항
- 코딩테스트란?
- 지원자가 알고있는 자료 구조와 알고리즘 등을 활용 → 문제해결능력을 평가하는 시험
- 제한 시간 내 푼 문제 개수 + 시간으로 평가 → 빠르고 정확하게 풀어야 한다.
- 보는 이유
- 문제해결과정
- 주어진 문제를 정확하게 파악하는것이 중요
- 요구하는 방향으로 문제를 해결하려고 하는가
- 주어진 문제를 정확하게 파악하는것이 중요
- 똑같은 결과지만 빠르고 효율적으로
- 코드의 실행 시간에도 제약이 있다. → 빅오를 배우자.
- 개발자 실력 = 막연한 구현 (x) 효율적 설계 (o)
- 기능 구현은 걍 필수다.
- 빠르고 많이 (X) → 정확하고 효율적으로 (O)
- 문제해결과정
- 코딩 & 디버깅
- 잘 짠 코드란?
- 가독성 + 효율성
- 가독성 : 코드 역할에 집중 → 메서드나 클래스로 분해하자.
- 효율성 : 메서드 → 사칙연산으로 해결
- 가독성 + 효율성
- 흔히 하는 실수
- 충분한 설계 없이 프로젝트 시작하기
- 설계가 없다면 이정표 없이 계속 진행하는 것과 같다.
- 초보자라면 계속 엎으면서 해보자.
- 충분한 설계 없이 프로젝트 시작하기
- 코드 작성 시 가독성 + 역할에 신경쓰자 → 단계별 문제 해결이 가능하다.
- 잘 짠 코드란?
- 실전
- 사용자가 입력한 전화번호를 가진 사람들을 전화번호부에서 검색하는 기능 구현
- 내가 짠 로직
- 전화번호를 입력받는다.
- 리스트를 순회하며 검색한다.
- 있으면 true 리턴하며 검색결과를 알려준다.
- 없다면 false 리턴하며 새로 추가한다.
- 책에서 알려준 로직
- 전화번호는 어떤 형식으로 나타낼 것인가
- 어떤 형식으로 적던지 일정하게 출력하도록 작성한다.
- 전화번호부에 저장되어있는 사람은 어떻게 나타내는가
- 전화번호를 가진 사람을 설계하자.
- 사람과 전화번호는 어떻게 비교하는가
- 리스트에 있는지 확인하기만 하면 된다.
- 디버깅 후 에러 수정을 위한 코드 추가
- 전화번호부는 어떤 형식인가
- 여러 사람을 담는 전화번호부를 설계하자.
- 전화번호는 어떤 형식으로 나타낼 것인가
- 내가 짠 로직
- 단계별로 문제를 나누어 작성하자 → 불필요한 시행착오 줄어듦 → 결국 문제 빠르게 해결할 수 있게 됨.
- 사용자가 입력한 전화번호를 가진 사람들을 전화번호부에서 검색하는 기능 구현
느낀점
- 코딩 테스트는 걍 문제풀이라고 생각했지만, 가독성 + 효율성을 검토하는 시험이라고 새롭게 정의할 수 있었다.
- 단계별로 나누어 문제를 정확하게 풀어내는 것이 목적이다. → 이는 면접에서도 잘 활용될 수 있다.
- 똑같은 결과를 내도 효율적으로 푸는 것이 좋다.
- 똑같은 결과를 내도 가독성 있는 코드를 작성하는 것이 중요하다.
- 문제를 풀기 전 충분한 코드 설계 과정이 필요하다. → 충분히 큰 그림을 그리고 시작하자. 쉬운문제부터 이걸 연습하는 습관을 들여야 겠다고 생각했다.
- 실전편이 지렸다.
- 전화번호를 입력받는 것부터 제대로된 설계가 필요하다니…!
- 전화번호는 어떤 형식으로 나타낼 것인지 파악 → 나는 걍 01012341234 처럼 입력받을것이라 생각했는데, 이를 010-1234-1234 or 010 1234 1234 마냥 사용자 입력을 다르게 줄 수 있을 것을 생각을 못했다.
- 사람과의 연관관계 또한 생각하지 못했다. 사람은 전화번호가 여러개 있을 수 있고, 이를 전화번호부 클래스를 만들어 구현한다는 생각을 하지 못했다.
- 전화번호를 입력받는 것부터 제대로된 설계가 필요하다니…!
728x90
반응형
'알고리즘' 카테고리의 다른 글
시간 복잡도에 대하여 (0) | 2023.07.10 |
---|---|
[알고리즘] 강의 중간 정리 with Java (0) | 2022.04.12 |
[트리] 전위순회, 중위순회, 후위순회 (0) | 2022.04.11 |
[알고리즘] 퀵 소트 공부해보기 (0) | 2021.11.13 |
[프로그래머스] 가장 긴 펠린드롬 (0) | 2021.11.08 |