코딩테스트를 공부하면 얻을 수 있는 것

→ 기업 입사 관문 → 자료구조, 알고리즘을 활용한 최적화 코딩 → 논리적으로 생각할 수 있는 힘

코딩테스트 추천 언어

파이썬 → 구현시 코드가 짧다. 라이브러리가 풍부하다(순열, 조합, upper-bound 등). 하지만 보통 다른 언어를 주력으로 쓸 것이어서 배워야 한다(그치만 쉽게 배운다는 점). C++ → 빨라서 대회에서 쓰인다고 함, 구현시 코드가 그래도 짧다. 하지만 보통 다른 언어를 주력으로 쓸 것이어서 배워야 한다 자바, 자바스크립트 → 주력 언어이면서 코딩테스트 둘다 가능하다. 자바는 구현시 코드가 상대적으로 길다. 자바에서 배열이나 컬렉션의 길이를 구하는게 다 달라서 불편하다. 자바스크립트는 기본으로 제공 해주는 자료구조가 다른 언어보다 적은걸로 알고 있고 시험 볼때 사용할 수 없는 경우도 종종 있는거 같다(?). 필자는 파이썬 > C++, 자바, 자바스크립트 중 1개 로 추천한다.

이번 강의 들어 가기 전에

시간복잡도에 대해 설명할 예정이고 손 코딩은 없고 문제를 보면서 시간복잡도에 대한 설명이 많을 거에요.

오늘 적용 시킬 문제 중 하나는 아래와 같은 문제인데요.

N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (N = 8, N값 문제랑 다르게 수정함)

출력

첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.

브루트 포스로 풀이를 했을 때(일명 노가다) 시간복잡도를 어떻게 적용 시킬지에 다룬다. N=8 일때 N=15일 때 등 여러 상황에서 나는 시간 복잡도를 잘 적용 시키는 능력이 있는지 체크해 보자.

——————————————————————————————————————————

오리엔테이션

최근에 보아서 기억나는 기출 문제와 지금까지 경혐으로 출제 빈도를 만들면 다음과 같다.

20240817110044.png