본문 바로가기
728x90

프로그래머7

[SW사관학교 정글] WEEK05 주말의 단상 [SW사관학교 정글] WEEK05 주말의 단상 주말이 되어따.. 주말은 일단 행복하다. 평일도 행복하지만 고통-행복-고통-행복의 무한 반복이라면, 주말은 defualt가 일단 행복이다. 똑같이 공부하고 똑같이 강의실에 앉아 있음에도 마음이 여유로워 지는건 신기하면서도 기분 좋은 일이다. 어제도 4시에 잠들어서 아침 늦게 일어났음에도 불구하고 머리가 아픈 관계로 중간 감상문을 적어볼까 한다. 아마 단상이자 잡상이 되지 않을까 싶다. 4주간의 알고리즘 공부가 끝나고 C언어와 OS 공부주차에 들어갔다. 이번주 공부했던 것은 공부하는 내내 레드-벨벳 케이크가 생각나는 레드-블랙 트리여따. 투썸에 먹으러 가야게따.. 5주차 - 레드-블랙 트리 가아아아아아장 복잡한 구조를 자랑하는 자료구조를 배우면 앞으로 어떤 자.. 2021. 9. 12.
[WEEK03] 알고리즘_그래프, DFS, BFS [WEEK03] 알고리즘_그래프, DFS, BFS 이번 주는 DFS(Depth First Search) 깊이 우선 탐색, BFS(Breadth First Search) 너비 우선 탐색에 대한 내용을 학습한다. 이 두가지 방법은 그래프의 탐색 기법으로 그래프에 대해 먼저 알아보자. 그래프 그래프는 정점(노드)과 간선(엣지)으로 이루어진 자료구조를 의미한다. 또한 간선의 방향의 유무에 따라 단방향 그래프, 무항향(양방향) 그래프로 나뉜다. 그래프를 표현하는 방식은 인접 리스트, 인접 행렬 두가지로 나뉜다. 일반적으로 인접 행렬이 많이 사용된다. 두가지 모두 익숙해져서 문제에 맞는 방법을 이용할 수 있도록 해야겠다. 1) 인접 행렬 그래프 - 모든 정보를 저장 - 장점 : 직관적, 쉽게 구현 가능 - 단점 :.. 2021. 8. 20.
[백준_11279] 우선순위 큐, 최대 힙 [백준_11279] 우선순위 큐, 최대 힙 최대 힙을 이용해 원하는 값을 출력하는 우선순위 큐 문제를 풀어보았다. 내 코드 - 모듈 없이 do it! 책대로 풀었는데 시간초과가 떳다.... 남들은 더 간단하게 했는지 input()만 sys.stdin.readline()으로 고쳐주면 통과 된다는데 이 방식으론 통과가 안된다. 그래서 옆에 친구한테 물어보니 모듈을 쓰면 된단다 =.=;; 그래도 원리 이해한 거에 의의를 두는 걸로 import sys def heap_sort(a): def down_heap(arr, left, right): # left : 기준, right가 n-1 가장 마지막 leaf tmp = arr[left] parent = left #left 뺴고 다 heap 구조 가정 while pa.. 2021. 8. 16.
[WEEK01] 8/15 TIL_힙 정렬 [WEEK01] 8/15 TIL_힙 정렬 선택 정렬을 응용한 알고리즘인 힙 정렬을 알아보겠다. 힙 정렬은 힙의 특성을 이용하여 정렬하는 알고리즘이다. 힙은 부모의 값이 자식의 값보다 항상 크다는 조건을 만족하는 완전 이진트리이다. 선택 정렬 먼저 힙 정렬에 알아보기 전에 선택 정렬을 알아보자. 선택 정렬은 '가장 작은 원소부터 정렬하는 방법'이다. 힙 정렬 - 특성 힙(heap) 정렬은 힙의 특성을 이용하여 정렬하는 알고리즘이다. 힙은 '부모의 값이 자식의 값보다 항상 크다'는 조건을 만족하는 완전 이진 트리이다. 이때 부모의 값이 자식의 값보다 항상 작아도 힙이라고 한다. 힙(heap)은 쌓아 놓음을 의미한다. 트리의 가장 윗부분에 위치한 노드를 루트(root)라고 하고 가장 하래에 위치한 노드를 리프.. 2021. 8. 15.
[백준_2470] 중, 이분 탐색, 두 용액 [백준_2470] 중, 이분 탐색, 두 용액 산성 용액과 알칼리성 용액은 각각 양수와 음수의 특성값을 가지고 있다. 두 용액을 섞어 0에 가깝게 만들려고 할 때, 용매 각각의 특성값을 출력하는 문제이다. 이 문제는 처음에도 그렇고 풀고 나서도 그렇고 이분 탐색인지 직관적으로 와닿지 않는다는 게 어려웠다. 처음에 '이전의 start와 end의 합'과 'start index +1', 'end index -1'일 때 각각과 비교해 차이가 더 작은 방향으로 움직여야 한다고 생각했다. 그런데 이렇게 했을 때 문제는 [-95, -4, 3, 100]과 같은 경우 답이 -95, 100으로 출력된다는 점이다. 문제를 푸는 핵심 포인트는 정렬 후 양쪽에서 0의 방향으로 진행하는 부분(이진 탐색) 합이 양수인지 음수인지에 .. 2021. 8. 13.
[백준_2110] 중, 이분 탐색, 공유기 설치 생각 포인트 가장 인접한 두 공유기 사이의 최대 거리를 구해야 하므로 N개의 집의 양 끝에는 공유기가 무조건 설치된다. 그 다음 공유기 설치 위치는 좌표적으로 1번째와 N번째 공유기 중간에 가장 가까운 곳에 위치해야 한다. (순서상 중간이 아니다) 이 부분이 이진 탐색과 연결이 된다. 그럼 중간 좌표와 가장 주변 집의 좌표들 차이의 최솟값을 구해 최소가 되는 지점의 index에 공유기를 설치한다. 그 다음 공유기는 방금 설치한 공유기를 기준으로 1번째와 N번째 공유기 위치와의 거리 중 긴 곳 영역에 설치된다. 이후 반복. 이란 생각으로 풀었는데, 완전 오답 풀이였다.... 일단 이 방식은 딱 중간 가까운 공유기를 설치하기 때문에 공유기 개수가 짝수일 경우에는 오답이다.. 정답 코드를 작성하기 위한 핵심은.. 2021. 8. 13.
728x90