- 알고리즘? 코딩테스트?
- 코딩테스트 종류
- 코딩테스트 준비하기
- 데이터 구조와 알고리즘
코딩테스트 준비!
3주간의 목표: 삼성 역량 시험에서 IM 통과할 수 있을 정도로
첫 번째 산: SW 역량테스트(IM형, A, B, C형) IM 단계 합격하기(3달간 준비)
*SWEA D2~D3, 교육은 SWEA Intermediate 강의를 들어보면 좋음
두 번째 산:
What is Algorism?
어떤 문제를 해결하기 위해 정해진 일련의 절차나 행동
문제란 Input을 넣었을 때, 원하는 Output이 나오도록 하는 것
기업에서는 코딩테스트를 기반으로 신입의 현업 능력을 추정
오픈북 테스트 환경인 경우가 많으니까, 개인 노트나 IDE를 잘 정리해두고 시험에 유리하게 활용하기
화이트보드 기술면접: 혼자서 문제를 술술 풀고 나오면 탈락! 내가 생각하는 것을 얼마나 잘 communicate 하는지를 보려고 보는 손코딩 시험
코딩테스트 준비를 한마디로 정리하면? 많이 풀기!
단순히 많이 풀기만 하는 게 아니라, 많이 풀기의 지름길을 알려 줄 예정
문제는 매번 풀 때마다 다른 유형을 푸는 것이 좋다? X
연습 때는 같은 유형 문제를 단기간에 여러 번 반복하는 것이 좋고
코딩테스트 직전에는 모의고사처럼 시간 제한을 두고 여러 유형을 푸는 것이 좋다.
오랜 시간 고민했는데 풀리지 않을 때, 끝까지 답을 보지 않는 것이 좋다? X
다만, 이후에 답을 보지 않고 반드시 한번 더 풀어서 내 것으로 만들어야 한다. 최대한 타인의 답을 많이 보면서 여러 풀이를 습득하는 것이 좋다.
알고리즘 문제는 몇 문제 정도 풀어야 코딩테스트를 통과할 수 있을까?
통계적으로 300~350문제. 사람마다 다르지만 이 정도 풀면 대부분의 코딩테스트에 무난하게 합격할 수 있다.
(기초 100, 중급 100, 고급 100 / D2 50개 정도?)
기타 꿀팁
변수명 대충 짓지 않기 (for문에 i 정도는 가능! 임시변수니까)
언어가 가지는 내장 함수, 라이브러리를 적극 활용하기
반복되는 코드는 함수화를 통해 가독성 있게 작성하기
면접을 위해 풀이를 남에게 설명하는 연습 반드시 필요
함수화를 잘해야 재귀를 뚫을 수 있고, 재귀를 뚫어야 DP에 도달
데이터구조&알고리즘
프로그램 = 데이터 구조 + 알고리즘 (Niklaus Wirth)
(저장) + (조작/계산)
데이터 구조: 데이터를 다양한 방식으로 저장하고 + 조회, 삽입, 변경, 삭제와 같은 조작 기능을 제공한다.
데이터 구조가 왜 중요한가?
문제를 효율적으로 풀기 위해서!
서로 다른 용도의 물통(비커, 스포이드 ...)을 생각해보면 이해하기 쉽다
시퀀스형은 순서가 있으니까 순회(순서대로 돌 수 있다) 가능함!
영어로는 iterable
입력과 출력
-
입력 활용 예시(input)
- input()은 사용자의 입력 한 줄을 문자열로 받는 함수
- 컴퓨터가 프로그램에 대한 입력 제어권을 사용자에게 넘김
- 기술면접 질문예시: 여러분이 브라우저에 네이버.com 을 검색하는 순간 일어나는 일들을 설명해 보세요.
-
출력 활용 예시(print)
- print()는 데이터를 출력할 수 있는 함수이며, 자동적으로 줄 바꿈 발생
- print 의 return 값은 None. 아무것도 리턴을 하진 않습니다
- 콤마(,)를 이용해 여러 인자를 넣으면 공백을 기준으로 출력
- end, sep 옵션을 사용하여 출력 조작하기
실제 코딩테스트는 프로그래머스에서 환경을 빌려오기 때문에, 백준이나 SWEA 가 아닌 프로그래머스에 적응할 필요가 있다