강의리뷰 : 1시간만에 정복하는 코딩테스트 합격법

JUN·2023년 9월 21일
4

codingTest

목록 보기
2/23

❗ 코딩 스파르타 클럽에서 제공한 1시간짜리 코딩테스트 팁강의 기록 및 정리.

1. 코딩 테스트란?

  • 개발자나 데이터 사이언티스트 채용에서 사용되는 시험

  • 기술 역량 + 문제 해결 능력 + 코드 구현 능력

    • 기술 역량
    • 문제 해결 능력 : 버그 발생, 신규 기능 도입에 대한 문제를 논리적으로 분석하는 능력
    • 코드 구현 능력 : 논리적 분석을 바탕으로 원하는 알고리즘을 구현하는 능력
  • 코딩 테스트 → 기회를 늘린다는 생각으로 하면 됨

  • 테스트 유형

    • 감독관이 지켜보고 대화하면서 문제를 푸는 경우도 있음
    • 온라인
      • 플랫폼을 통해 시험 응시 (HackerRank, LeetCode)
      • 인터넷 검색을 허용, 자신의 개발환경에서 실행
    • 오프라인
      • 회사(시험장) 방문 응시
      • 인터넷 검색 x, 회사 제공 환경에서 진행
  • 문제 파악하기

    • 문제, input, output, 제약조건 제시
    • 확인 후 코드 작성 칸에 풀이

2. 기업별 코딩 테스트 유형 분석

  • 기업별 빈출 문제 먼저 공부하는 것이 효율적! → 시험 후기 확인
  • 경우에 따라 SQL이 출제될 수도 있음.

3. 알고리즘 학습 로드맵

  1. 기술 역량
  • 자료구조 Array/List, Linked List,
    Stack, Queue, Dequeue,
    Priority queue, Hash Table,
    Graph, Tree, Heap

데이터를 효율적으로 저장하고 잘 쓰기 위함. 요리의 재료

  • 알고리즘 Simulation/Implementation,
    Search, Sort, Greedy,
    Dynamic programming, Dijkstra,
    Floyd-Warshall, Prim, Kruscal
    DFS, BFS
  1. 문제 해결 능력

    • 주어진 제시문을 잘 이해하고, 문제를 분석하여 해결책을 찾아 내는 능력 → 풀이를 말로 설명해 본다. 논리적으로 빈약한 부분을 찾기도 함!

    Q. 풀다가 막히면 답안을 찾아봐야 하나?

    A. 시간을 정해두고, 넘겨도 못풀면 답보기

    (초반에는 많은 풀이를 보는 것이 좋음, 다음날에 타이핑하면서 문제를 풀어볼것.)

  2. 코드 구현 능력

    꾸준히 오래하는 것이 중요!!

    1. 기본 문법 학습
    2. 기초 알고리즘 문제 풀이
    3. 기출 문제 풀이

    Q. 코딩테스트는 어떤 프로그래밍 언어로 준비하는 것이 좋을까요?

    A. 파이썬! → 인공지능으로 인기가 많아졌음. 많은 모듈과 문자열처리의 효율성.


4. 문제 풀이 비밀 노트

  • leatCode 회원가입
  • 알고리즘 포트폴리오 만들기 리트허브 크롬 익스텐션을 통한 자동 깃허브 트래킹 LeetHub v2
  • Pycharm IDE 설치
  • 나만의 알고리즘 노트 만들기 알고리즘 빈출 유형 알고리즘 노트 만들기 → 탬플릿으로 사용!

5. 네카라쿠배 기출문제 풀기

# "8zerothree2 → 8032
# ""seven73nine"" → 7739
# ""two53eightfour"" → 25384

s1 = "8zerothree2"
s2 = "seven73nine"
s3 = "two53eightfour"

def solution(s):
    num_dict = {
        "zero":"0",
        "one":"1",
        "two":"2",
        "three":"3",
        "four":"4",
        "five":"5",
        "six":"6",
        "seven":"7",
        "eight":"8",
        "nine":"9",
    }
    for str in num_dict:
        s = s.replace(str, num_dict[str])
        answer = s
    return answer

print(solution(s1))
print(solution(s2))
print(solution(s3))

마지막 꿀팁

  1. 숨어있는 Test Case 를 조심하라!

    문제에 제시되어있는 테스트 케이스 뿐 아니라 엣지 케이스(숨어있는 테스트케이스) 를 생각하며 풀이

  2. Timeout 조심하라!

    • 불필요한 연산 제거
    • 반복문 줄이기
    • 중복되는 계산 재사용하기

    → 성능 향상을 위해 전략적으로 접근! (내장 함수 활용 등)

profile
순간은 기록하고 반복은 단순화하자 🚀

0개의 댓글