요즘 코딩 테스트를 실시하는 기업(카카오, 네이버, 구글, 페이스북, 넷플릭스 등)이 적지 않고 알고리즘 대회(카카오 대회, 삼성 대회, 구글 코드잼 등)도 많이 열리고 있습니다. 알고리즘 사이트(프로그래머스, 릿코드, 백준, 코드포스 등)도 다양하구요. 그래서 이 글을 안 올릴 수가 없더라구요 ㅋㅋㅋ 따라서 이번 시간에는 코딩 테스트와 알고리즘 대회에서 필요한 코딩 지식을 살펴보겠습니다. 이 글은 코딩 기초를 알려주는 글이 아니므로 자세한 설명은 하지 않겠습니다. 만약 개념을 설명하는 글이 올라오면 링크를 올려서 점차 수정해 나가겠습니다
(1) Python or C++
- 코딩테스트, 알고리즘 대회, 알고리즘 사이트에서 거의 허용하는 언어입니다.
- 만약 개발자가 되기 위해 코딩 테스트를 준비하는 거라면 Python을, 알고리즘 대회를 준비하는 거라면 C++를 공부해야 합니다. 그 이유는 가장 추천하는 언어는 Python이지만 일부 대회에서는 Python을 허용하지 않기 때문입니다. 가장 대표적으로 삼성 소프트웨어 맴버십, SCPC가 그러죠 ㅠㅠ
(2) 변수 (Variable)
- 프로그래밍의 기본 중의 기본입니다. 이 세상에 변수 없는 프로그램은 거의 없어요 ㅋㅋㅋ
- 변수는 값을 저장할 수 있는 공간입니다. 단, 하나만 저장할 수 있습니다.
(3) 배열 & 리스트(Python) & 벡터(C++) (Array & Python List & C++ Vector)
- 배열은 정해진 갯수만큼 여러 개의 값을 저장할 수 있는 공간입니다.
- 벡터도 배열처럼 여러 개의 값을 저장할 수 있으나 갯수가 정해져있지 않다는 차이점이 있습니다. 즉, 몇 개든지 값을 추가할 수 있습니다.
(4) 함수 (Function)
- 코드를 반복적으로 사용할 수 있도록 구현해둔 형태입니다.
- 수학의 함수를 떠올리시면 됩니다.
(5) 구조체 (Structure)
- 변수와 함수들을 묶어놓은 형태의 집합체 입니다.
- C++에서는 변수, 함수 모두 선언할 수 있지만 C에서는 오로지 변수만 선언할 수 있습니다.
(6) 자료구조 & 알고리즘 (Data Structure & Algorithm)
- 데이터들을 효율적으로 다루기 위한 방법입니다. 코딩 테스트 및 알고리즘 대회의 꽃이라고 할 수 있죠.
- 만약 코딩 테스트만 준비하는 거라면 그리디(Greedy), 탐색(DFS, BFS, 이진 탐색 등), 다이나믹 프로그래밍(Dynamic Programming)의 개념을 이해한 후 관련 문제를 많이 풀어보는 것을 추천합니다. 그 이유는 이 3가지만 활용할 줄 알아도 왠만한 기업 코딩 테스트는 다 통과할 수 있기 때문입니다. 그러나 알고리즘 대회를 준비하는 거라면 거의 모든 개념을 다 이해해야 하고 문제도 굉장히 많이 풀어야 할 것 같습니다. 그 이유는 코딩 테스트와는 다르게 지엽적인 알고리즘이 많이 출제되는 걸로 알고 있거든요 ㅠㅠ (사실 알고리즘 대회를 많이 안 나가봐서 대회에서 주로 출제되는 알고리즘이 무엇인지는 모르겠습니다 ㅠㅠ 만약 아는 사람 있다면 댓글로 알려주시면 감사하겠습니다!)
여기까지가 코딩테스트, 알고리즘 대회에서 필요한 지식인 것 같습니다. 따라서 코딩 테스트 or 알고리즘 대회 참여를 원하는 분들은 위의 내용들을 빨리 공부하시고 알고리즘 사이트에서 문제를 많이 풀어보는 것이 좋을 것 같습니다. 만약 혼자서 공부하기가 어렵다면 학원, 스터디 그룹을 알아보셔야 할 것 같습니다.
혹시 이거 말고 더 필요한게 있다는 생각이 들면 댓글로 알려주시면 감사하겠습니다.
'IT강의 > (Others)' 카테고리의 다른 글
알고리즘 사이트 소개 및 각 장단점 (0) | 2021.06.27 |
---|---|
예비 개발자라면 반드시 알아야 할 프로그램들 (0) | 2021.05.28 |
래스터 그래픽과 벡터 그래픽의 차이 (0) | 2021.05.10 |
정보처리기사 실기 준비 Tip (0) | 2020.12.27 |
정보처리기사 필기 준비 Tip (0) | 2020.12.26 |