목록알고리즘 (4)
Earn this, Earn it.

스택(Stack)과 큐(Queue) 스택과 큐란 무엇인가? 스택 : 후입 선출 (LIFO), 파이썬의 리스트로 커버 가능 큐 : 선입 선출 (FIFO), 데크(deque)를 이용해야 좋은 성능 (리스트는 동적 배열로 구현되어 있어 큐의 연산을 수행하기에는 효율적이지 않다) 데크(Deque) 데크란 무엇인가? 데크는 양쪽에서 삭제와 삽입을 모두 처리할 수 있는 자료구조로, 스택과 큐의 특징을 모두 갖는다. 구현은 배열이나 연결 리스트 모두 가능하다. 파이썬에서는 collections 모듈에서 deque로 지원한다. list = [1,2,3,4] deque = collections.deque(list,maxlen=10) // 최대 길이를 지정할 수 있다. deque.pop() deque.append() de..
2021년 7월 24일 글 브루트포스(Brute Force) 브루트포스란 나올 수 있는 모든 경우의 수를 계산하여 조건에 맞는 값을 가져와 알고리즘을 푸는 방식이다. 다른 말로 완전탐색이라고 한다. 브루트포스 알고리즘의 장점은 무조건 결과를 찾을 수 있다는 점이나, 모든 경우의 수를 계산하기에 딱히 알고리즘이라 볼 수 없을 뿐더러 효율성이 매우 떨어진다. 즉, 코딩테스트시 브루트포스 알고리즘을 쓰는 경우는 높은 확률로 더 좋은 알고리즘이 존재할 것이며 대부분의 사람들이 구현만 할 수 있으며 짤 수 있으므로 잘 안 나온다고 볼 수 있다. 그리고 브루트포스 보다는 수학적 알고리즘을 섞어서 내는 경우가 많으므로 딱히 이 부분을 준비한다기보다 최후의 보루로 남겨두는 편이 안전할 것이다. DFS와 BFS 이들은 ..
2021년 7월 18일 글 문제 문제 설명 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 선수의 수는 1명 이상 100명 이하입니다. 경기 결과는 1개 이상 4,500개 이하입니다. results 배열 각 행 [A, B]는 ..
2021년 7월 18일 글 그래프(Graph)란? 정의는 다양하나 그래프 이론에서의 그래프란 객체의 일부 쌍들이 '연관되어' 있는 객체 집합 구조를 말한다. 그 중에서도 코딩테스트에서 자주 등장하는 그래프 순회를 다뤄보겠다. 그래프 순회 "그래프 순회란 그래프 탐색이라고도 불리우며 그래프의 각 정점을 방문하는 과정을 말한다." 그래프 순회에는 크게 깊이우선탐색(Depth First Search, 이하 DFS)와 너비 우선 탐색(Breadth First Search, 이하 BFS)가 있으며, 이에 대해서는 별도의 분류가 존재하므로 거기서 자세히 다루기로 한다. 그래프vs트리 그래프와 트리의 차이점은 한마디로, "트리는 순환 구조를 갖지 않는 그래프"라는 점이다. 즉, 트리보다 그래프가 광의의 개념으로 트리..