반응형
예상 할 수 있듯이 특별한 꼼수가 있는 것은 아니다.
그리고 다 아는 얘기, 당연하지만 쉽게 간과할 수도 있는 내용이라고 생각한다.
코딩 테스트 사이트:
백준코딩: https://www.acmicpc.net/
프로그래머스: https://programmers.co.kr/
해커랭크 : https://www.hackerrank.com/
린트코드 : https://www.lintcode.com/
리트코드 : https://leetcode.com/
[문제를 풀 때 TIP]
- 여러가지 풀이방법이 있을 수 있다는 것을 생각하기. (생각이 고착화 되어 막힌다면 풀이시간이 길어질 수도, 풀지 못할 수도 있다.)
- 항상 예외가 있을 수 있다는 것을 생각하기. (예측케이스를 고려하지 못하면 틀릴 수 도 있다.)
- 더 효율적인 풀이가 있을 수도 잇다.
- 시행착오를 모두 기록하기. 오답노트를 기록하면 다음 번 유사 유형에 큰 도움이 된다.
- 다름사람의 코드를 많이 보자. 어떻게 이렇게??? ㅇ_ㅇ 생각하지 못했던 방법을 발견할 수 있다.
- 쉽게 포기하지 말자! 최소한 2-3시간 고민. 하지만 도저히 모르겠다면 질질 끌지 말고 정답을 보는게 정신건강에도 좋다.
[공부 할 때 TIP]
- 1. 시각적인 사이트의 도움을 받자(visu algo, algorithm visualizer)
- 2. 공부하는 자료구조/ 알고리즘이 실제로 우리가 이용하는 서비스 어디에 쓰일지 생각해보면서 공부하자
[마음가짐 TIP]
- 알고리즘 마스터가 될 필요는 없다. 제품을 잘만드는 개발자가 되고싶은거지 알고리즘을 연구하는 학자가 되고싶은건 아니니까요?
- 코딩 능력과 논리적인 사고를 판단하기 위한 문제가 출제 되기에 문제 해결 능력을 기르는 것이 좋다.
[코딩테스트 잘보는 법 TIP]
- 자신의 성향을 파악하자 (둘 중에 맞고 틀린 것은 없으나 성향을 빠르게 파악하는 것이 문제 접근에 큰 도움이 되는 것 같다!))
- 유형1. 미리 얼추 결과값 도출까지 생각하고 코드를 작성해야 더 잘 풀리는 사람
- 유형2. 일단 코드를 작성하면서 생각해야 더 잘 풀리는사람
- 메모하기
- 시험이 시작되면 긴장을 하기에 문제가 무엇인지 정확하게 파악이 안될 수 있고, 내가 방금 전에 머릿속에 생각했던 것들이 또 생겨난 생각에 덮여 잊혀버릴 수도 있다.
- 주석이나 메모장 활용하기
- 헷갈리면 순서도 그리면서 정리해보기
- 디버깅은 필수!
- 예상대로 동작이 되지 않으면 꼭 디버깅을 하기
- 작은 단위로 구현 후 디버깅으로 "여기까지는 해결" 마침표 마음에 찍고 넘어가기
- 디버깅 툴 활용이 불가능하다면 중간중간에 프린트 문으로 값 찍어보기로 디버깅
- 익숙해지기
- 문제 읽기에 익숙해져야 한다. 코딩테스트 지문은 길고 이해하기가 어렵고 집중도 잘안된다 ㅠㅠ(개인적으로는..) 여러 문제를 경험해 보면서 중요한 것만 요약해서 읽기 연습이 중요하다.
- 예시 케이스를 생각하는 것에 익숙해져야 한다.
- 시간복잡도 계산 하는 것에 익숙해져야 한다.
[좋은 코드 만드는 법 TIP]
- 간결하고 가독성 좋은 코드
- 변수, 함수의 이름을 맞게 정의 했는가
- 중복 코드를 제거 했는가
- 함수형 프로그래밍을 활용하는 것도 좋다
- 예: javascript map, filter, reduce같은 고차함수 적극 활용
- 가지치기를 했는가?
- 흔히 가지치기는 백트래킹과 같은 알고리즘에서 사용되지만 그 외 알고리즘에서도 중요하다.
- 작고 짧은 로직이라면 성능에 크게 영향을 미치진 않지만 코드리뷰에서 좋은 평가를 받을 수 있다.
- 일관성을 유지했는가?
- 잘 짯더라도 일관성 없는 코드보다 조금 더러워도(?) 일관성 있는 코드가 좋다.
- 변수 선언 키워드를 혼용해서 사용하지 않았는지 체크 (예: javascript var, let혼용)
- 네이밍 규칙을 일관되게 사용 했는지 체크(camelCase, PascalCase, kebab-case, snake_case)
참고: [인강] 코딩테스트 광탈방지 A to Z : javascript
공부한 내용에 개인적인 생각을 더한 것으로 주관적이며
틀린 부분이 있을 수 있습니다.
언제나 피드백은 환영입니다 (*˙˘˙)♡
반응형
'내직업은 IT종사자 > 알고리즘.자료구조' 카테고리의 다른 글
[algorithm] 시간복잡도란? 시간복잡도 계산하는법 ( O(1), O(n), O(log n)) (1) | 2023.04.16 |
---|---|
[algorithm] stack(스택)이란? 사용 예제/방법 (javascript 코드) (0) | 2023.04.11 |
[algorithm] 해시테이블 자료구조 란? (0) | 2023.03.10 |