일주일동안 공부했던 알고리즘과 해결했던 문제들을 정리하고 어떤 알고리즘이 약한지 , 어떤 알고리즘이 더 중요하고 필요한지 생각해봐야 할 것 같다.
01. 퀵 정렬
https://spongecake.tistory.com/20
[크래프톤 정글] | 8일
🗒️ Quick sort 이상적인 퀵 정렬의 모습 global a a = [5, 7, 9, 0, 3, 1, 6, 2, 4, 8] def quick(a,start,end): if start >= end : return pl = start + 1 # 피벗 오른쪽 부터 start pr = end # 배열 끝 pivot = start # 피봇 인덱스 while pl
spongecake.tistory.com
02. BFS
https://spongecake.tistory.com/12
[크래프톤 정글] - 9일
BFS def bfs(graph, start, visited): # 큐(Queue) 구현을 위해 deque 라이브러리 사용 queue = deque([start]) # 현재 노드를 방문 처리 visited[start] = True # 큐가 빌 때까지 반복 while queue: # 큐에서 하나의 원소를 뽑아
spongecake.tistory.com
03. 브루트 포스 문제
https://spongecake.tistory.com/14
[브루트포스] - 마인크래프트, 안전영역, 보물섬
18111번 _ 마인크래프트 문제 N, M ,B = list(map(int,s.readline().split())) array = [list(map(int,s.readline().split())) for _ in range(N)] listMax = max(map(max,array)) listMin = min(map(min,array)) result = int(1e9) resultH = 0 for k in range(list
spongecake.tistory.com
04. 이진 탐색
https://spongecake.tistory.com/15
[크래프톤 정글] - 11일
👥 이진 탐색 - 배열이 정렬되어 있어야 하며, 하나의 배열에서 반반 쪼깨서 값을 찾는 탐색이다. - 시간 복잡도는 O(logN)이다 이진 탐색의 기본 틀 from sys import stdin as s s = open('input.txt','rt') N, M = l
spongecake.tistory.com
05. 스택, 큐
https://spongecake.tistory.com/16
[크래프톤 정글] - 12일
🗒️ 스택, 큐 - 스택은 LIFO로 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있고, 탑으로 정한 곳을 통해서만 접근 할 수 있다. - 스택에서 삽입하는 연산은 push, 삭제하는 연산을 pop라
spongecake.tistory.com
06. 우선순위 큐, 힙
https://spongecake.tistory.com/17
[python] - 우선순위 큐, 힙
🗒️ 우선순위 큐 - 큐는 먼저 들어온 데이터가 먼저 처리되는 자료구조이지만, 우선 순위 큐는 우선 순위가 높은 데이터부터 처리하는 자료구조이다. 배열, 연결리스트, 힙으로 모두 구현할 수
spongecake.tistory.com
https://spongecake.tistory.com/18
[우선순위큐, 이분탐색] - 가운데를 말해요, 사냥꾼
🕹️ 가운데를 말해요 from sys import stdin as s import heapq leftHeap = [] rightHeap = [] s= open('input.txt','rt') n = int(s.readline()) arr = list(map(int,s.readlines())) for i in range(n): if len(leftHeap) > len(rightHeap): heapq.heappush(righ
spongecake.tistory.com
🔥 뭐가 더 중요할까?
개념들을 익히고 문제들을 풀면서 뭐가 중요할지 생각을 해봤는데, 이 알고리즘 대부분이 하나만 사용하는 것이 아니라 몇 개씩 묶어서 사용되기 때문에 다 중요하다고 생각한다. 그 중에서 현재까지 이해가 잘 된 알고리즘과 나머지에 비해 이해가 덜 된 알고리즘을 나눠 보려고 한다.
📔 이해가 잘 된 알고리즘
- DFS (완전히 이해를 했다기보단 일단 문제를 푸는데 조금이나마 재미가 있어서 어느 정도 이해 함)
- BFS ( "" )
- 브루트 포스 ( "" )
🥲 더 봐야할 알고리즘
- 스택, 큐, 우선순위 큐, 힙 (개념은 이해가 됐으나 문제에 적용하는게 아직 적응이 안됐음)
- 이진 탐색 (마찬가지로 문제에 적응하는게 현재 상태에서 이해가 잘 안되기도 하고 어려움)
- 퀵 정렬 (퀵 정렬을 사용하는 문제들을 접해봐야 더 자세하게 알 수 있을 것 같음)
위대한 사람의 조건
" 도도한 강물의 흐름에 맞서 거꾸로 곤두박질치려는 사람에게 나는 동의하지 않는다네. 그런 사람은 운명의 잔혹함을 인정하면서도 위대한 정신을 앞세워 운명이 부여하는 모든 난관에 맞서 매일 사투를 벌이려 하지. 반면 현명한 살마은 운명을 감내할 뿐이네. 그리고 운명을 선택하려고도 하지 않아. 전쟁터보다는 평화 안에 있기를 선택한다네. "
- 세네카, 도덕에 관한 서한, 28.7
" 위대한 사람은 평론가가 아니다. 영광은 관중석에 앉아 선수가 어떻게 하면 더 잘할 것이라며 지적하는 사람의 것이 아니라 피와 땀과 먼지로 범벅이 된 채 경기장을 뛰고 있는 사람의 몫이다. "
두려움은 자신을 향한 예언이 된다.
" 많은 사람들이 두려움에 고통 받는다. 그들이 운명을 두려워하는 동안 운명은 그들을 찾아낸다. "
- 세네카, 오이디푸스, 992
실수를 두려워하는 사람은 세부까지 꼼꼼히 관리하지만 오히려 그것이 실수의 원천이 되기도 한다. 이처럼 두려움은 우리가 모르는 사이에 영향을 미친다. 비참한 결과가 두렵다면, 충동을 통제하지 못하고 자제력을 잃을 것 같다면, 바로 그 두려움으로 인해 우리가 재양에 빠질 수 있음을 기억하자.
분노를 다스리는 방법
" 울어 보게나. 나는 지금 지독한 고통 속에 있다고! 그래, 남자답지 못한 방식으로 인내했는데 그 고통이 사라지던가? "
- 세네카, 도덕에 관한 서한, 78.17
고통의 원인을 제거하는 것이 중요하지만 고통의 원인이 내가 통제할 수 있는 범위 바깥에 존재할 수도 있다. 그럴 땐 어떻게 해야 할까? 스토아 철학자들은 이때 문제를 있는 그대로 받아들이고, 해결할 수 있는 다른 문제에 집중했다.
- 일을 하거나 공부를 할 때나 무언가에 몰입한다는 건 정말 중요하지만,
- 몰입을 하는 순간만큼 중요한 것이 쉬는 것이라고 생각한다.
- 일요일인 만큼 일주일의 환기를 하기 위해서 서울숲을 다녀왔다.
빼곡히 서있는 나무들을 보니까 마음이 차분해졌다.
서울 숲 입구?에 있던 구조물들