이것이 코딩테스트다 3

파이썬 코딩테스트 참고자료 총 정리

나동빈님의 '이것이 코딩테스트다.'를 참고하여 필요한 부분만 따로 정리하였습니다. 복수의 특정 값 삭제하기 1. Python에서 리스트 삭제 시 복잡도는 O(N)이다. 2. 삭제 후 리스트 원소 위치를 조정하기 때문이다. 3. 따라서 여러 개 값은 삭제한다면, 복잡도는 O(N*logN)이다. 리스트 컴프리헨션을 활용해 O(N)으로 모든 특정값을 삭제할 수 있다. a=[1,2,3,4,5,5,5] remove_set={3,5} result = [i for i in a if i not in remove_set] print(result) 튜플 자료형 튜플 자료형의 특징과 시간복잡도 1. 튜플은 그래프 알고리즘 구현 시 자주 사용된다. 2. 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘 3. 다..

알고리즘 2021.11.01

그리디 문제풀이 - 볼링공 선택하기

🔸 볼링공 고르기 A,B 두 사람이 볼링공을 고를 수 있는 조합의 수를 구하는 문제이다. 볼링공 수는 N으로 최대 1,000 볼링공 무게는 M으로 최대 10 서로 같은 무게의 볼링공은 고를 수 없음 같은 무게의 공이 여러 개 존재할 수 있지만, 다른 공으로 간주 📌 예시 5 3 1 3 2 3 2 → 8가지 8 5 1 5 4 3 2 4 5 2 → 25가지 📌 초기 접근 방법 A가 첫 번째 공을 골랐다고 가정한다. 1을 골랐으므로, 나머지 공 중 1이 아닌 것의 개수를 구한다. 그 뒤 3을 골랐을 경우, 나머지 공 중 3이 아닌 것의 개수를 구한다. ... 위의 방식으로 첫 번째 공, 두 번째 공, 세 번째 공을 골랐을 때마다 뒤의 공 중 무게가 다른 공의 개수를 합해가며 최종 답을 구하였다. 📌 교재 접근..

알고리즘 2021.06.13

그리디 알고리즘 개념 총 정리

🔸그리디 알고리즘 Greedy는 탐욕스럽다는 뜻으로 매 순간 최선의 선택을 수행함으로써 문제를 해결하는 방식입니다. 따라서 몇몇 예외를 제외하면 문제 유형이나 테크닉한 기술 없이도 풀 수 있는 문제입니다. 하지만, 문제를 접했을 때 해결할 수 있는 최소한의 아이디어는 떠올릴 수 있어야 해결이 가능하므로 문제풀이를 통해 감을 익힐 필요가 있는 유형이라고 볼 수 있습니다. 단, 다익스트라 알고리즘, 정렬 알고리즘과 함께 출제되는 경우 미리 숙지가 필요한 경우도 있습니다. 📌 정리 그리디 알고리즘을 해결하기 위해서는 다음 능력을 키울 필요가 있습니다. 매 번 최선의 선택만 수행해도 문제를 해결할 수 있는지를 파악해야 합니다. 문제를 해결하기 위한 최소한의 아이디어를 떠올릴 수 있어야 합니다. 명확한 문제 유형..

알고리즘 2021.06.01