728x90

분류 전체보기 209

WEEK 03 알고리즘 TIL(4월1일 화요일)

오늘이 만우절이라 그런지 뽑기 이벤트가 있었다.어제 5번 문제를 다 풀고 노션에 정리를 안해서 정리를 하고 벨로그 정리한 다음, 오늘 퀴즈 내용인 다익스트라 알고리즘에 대해 다시 공부해보겠다.5번 11724 연결 요소의 개수https://www.acmicpc.net/problem/11724해당 문제는 몇개의 그래프가 있는지 묻는 문제와 같다. M만큼 입력을 받는다. 리스트를 만들어서 그래프를 만들고 기존 그래프에 해당되지 않은 정렬이면, 그래프 하나 만들면서 count +1 한다. 재귀적으로 반복 후에 count만 내보낸다. 라는게 내 생각이다.import sysinput = sys.stdin.readlinesys.setrecursionlimit(10**6) # 재귀 깊이 제한 증가N, M = map(..

B-Tree

B-Tree[참고 사이트]https://velog.io/@emplam27/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EA%B7%B8%EB%A6%BC%EC%9C%BC%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8A%94-B-Treehttps://yeongjaekong.tistory.com/38최대 3개의 키와 4개의 자식을 가질수 있는 차수가 3인 B-TreeB-TreeB-Tree는 이진트리에서 발전되어 모든 리프노드들이 같은 레벨을 가질 수 있도록 자동으로 균형을 맞추는 트리입니다. 정렬된 순서를 보장하고 멀티레벨 인덱싱을 통한 빠른 검색을 할 수 있기 때문에 DB에서 사용하는 자료구조 중 한 종류라고 합니다. B-Tree뿐아니라 B+Tree도 존재..

WEEK 3 컴퓨터 시스템 공부

멀티프로세서: 여러개의 cpu 집약체멀티코어: 하나의 프로세서에 있는 pc나 alu나 레지스터 등 코어가 여러개멀티쓰레딩(하이퍼 쓰레딩): 하나의 CPU가 여러개의 제어 흐름을 실행할 수 있게함.(매 사이클마다 실행할 쓰레드를 결정하여 효율적으로 쓰레드 사용)멀티프로세싱의 이용으로 시스템 성능 개선 방법 두가지다수의 태스크 실행시 동시성 시뮬레이션 필요 감소.멀티 프로세싱으로 한 개의 응용프로그램을 빠르게 실행할 수 있으나 프로그램이 병렬로 효율적으로 실행할 수 있는 멀티쓰레드 형태로 표현 시만 사용 가능부동소수점(컴퓨터): 지점을 참조, 같은 소수값을 매칭하면 flase를 반환고정소수점두가지 내용은 추후에 배운다.인스트럭션 수준 병렬성최근 프로세서는 낮은 수준에서 추상화로 여러 개의 인스트럭션 한 번에..

다익스트라 알고리즘

[참고 사이트]https://blog.encrypted.gg/1037https://velog.io/@717lumos/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%8B%A4%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%9D%BCDijkstra-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98다익스트라 알고리즘방향 그래프 혹은 무방향 그래프에서 하나의 시작점으로부터 다른 모든 정점까지의 최단 거리를 구해주는 알고리즘. 매번 최단 거리를 갱신한다.(우선 순위 큐 기준)현재까지 발견한 가장 짧은 경로를 우선 선택하여 진행하는 그리디 알고리즘. 작동순서(우선순위 큐)우선 순위 큐에 (0,시작점) 추가우선 순위 큐에서 거리가 가장 작은 원소를 선택, 해당 거리가..

최소신장 트리

[참고 사이트]https://blog.encrypted.gg/1024https://gmlwjd9405.github.io/2018/08/28/algorithm-mst.html최솟값으로만 연결한 결과이다.여러 형태가 있을 수도 있다.최소신장트리신장 트리는 주어진 방향성이 없는 그래프의 부분 그래프들 중에서 모든 정점을 포함하는 트리를 의미.위 사진에서 오른쪽 그래프는 왼쪽 그래프의 신장 트리라고 볼 수 있습니다.부분 그래프는 주어진 그래프에서 일부 정점과 간선만을 택해서 구성한 새로운 그래프를 의미.→ 여기서 최소 신장 트리는 신장 트리 중에서 간선의 합이 최소인 트리를 의미. 그래프가 어떻게 생겼냐에 따라 최소 신장 트리는 여러개가 될 수 있습니다.최소 신장 트리를 구하는 방식에는 쿠루스칼, 프림 알고리즘..

WEEK 03 알고리즘 TIL(3월31일 월요일)

오늘은 최소 신장 트리에 대해 완벽히 이해하고 코드 구성에 대해 공부했다. 해당 관련 개념은 다른 포스트에 따로 올리겠다.3번 1197 최소 스패닝 트리https://www.acmicpc.net/problem/1197최소 스패닝 트리를 풀기 위해서는 크루스칼과 프림 알고리즘이 있다. 그러나 크루스칼은 유니온 파인드라는 이론을 알아야하기 때문에 프림 알고리즘으로 구현해봤다. 프림 알고리즘은 임의의 노드에서 시작해서 다음 노드중 가장 적은 비용의 간선을 찾으면서 확장합니다.# 다음은 V 정점에 해당되는 E개의 간선 정보를 받아 합해서 최소 신장 트리의 가중치 합을 출력하는 원리의 코드이다.import sysimport heapqdef prim(V, edges): # 입력된 정점 개수 V와 간선 값을 받..

WEEK 03 알고리즘 여담(3월30일 일요일)

오늘은 일요일이라 늦잠도 자고 휴식을 취했다.시내에 가서 병원과 햄버거(전부터 먹고 싶었던 나폴리맛피자 버거!)도 먹고, 서점도 갔다왔다.생각보다 몸상태가 좋지 않아서 조심해야겠다.갔다와서는 최소 신장 트리를 1차적으로 이해했다. 이와 더불어 컴퓨터 시스템 책을 가져가서 이번주차 내용을 쭉 훝어보며 이해했다.

WEEK 03 알고리즘 TIL(3월29일 토요일)

오늘부터 본격적으로 알고리즘 문제를 풀었다.1번 1991 트리 순회https://www.acmicpc.net/problem/1991파이썬에서 이진 탐색 트리를 만들기 위해 Node와 트리 클래스를 만들어서 설계한다. 동료(룸메이트)분께서 알려주셨다. 딕셔너리와 재귀를 통해 루트, 왼쪽, 오른쪽 노드로 나누어서 프린트한다.import sysinput = sys.stdin.readlinesys.setrecursionlimit(10**8) # 재귀함수 리미트하여 메모리 초과 방지n = int(input())# 딕셔너리로 트리 구현tree = {}for i in range(n): root, left, right = map(str, input().split()) # 루트, 왼쪽자식, 오른쪽 자식 t..

위상정렬

위상정렬위상정렬을 알기전에 진입차수(indegree), 진출차수(outdegree)의 개념을 알아야한다. 다음 게시글을 참고하자. https://velog.io/@prkty/%EA%B7%B8%EB%9E%98%ED%94%84vertex-edge-node-arc[참고 사이트]https://blog.encrypted.gg/1020https://velog.io/@kimdukbae/%EC%9C%84%EC%83%81-%EC%A0%95%EB%A0%AC-Topological-Sortinghttps://velog.io/@orcasuit/%EC%9C%84%EC%83%81-%EC%A0%95%EB%A0%ACTopological-Sorting%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%ED%8A%B9%..

BFS / DFS

BFS / DFS[참고 사이트]https://blog.encrypted.gg/1016https://velog.io/@orcasuit/BFSBreadth-First-Search%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%ED%8A%B9%EC%A7%95https://velog.io/@orcasuit/DFSDepth-First-Search%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%ED%8A%B9%EC%A7%95-a3qlllyyhttps://suyeon96.tistory.com/32BFS(너비우선 탐색)(거리)특정 노드에서 시작하여 인접한 노드를 먼저 탐색해 나가는 방법.(가까운 정점부터)작동 순서(큐 사용)시작하는 정점을 큐에 넣고 방문했다는 표시 남김큐에서..

728x90