728x90
반응형

정글 37

[크래프톤 정글 5기] week02 알고리즘 주차 열두번째 날, 다익스트라 알고리즘(최단 경로 알고리즘), B-Tree

다익스트라(dijkstra) 알고리즘(최단 경로 알고리즘) - 그래프에서 한 정점까지의 최단 경로를 구하는 알고리즘 - 이 과정에서 도착 정점 뿐만 아니라, 모든 다른 정점까지 최단 경로로 방문한다. - 최단 경로를 구하는 과정에서, “각 노드에 대한 현재까지의 최단 거리” 정보를 항상 저장하고 갱신한다. - 매번 가장 비용이 적은 노드를 선택하는 것을 반복하기 때문에 그리디 알고리즘으로 분류되기도 한다. - 방향/무방향 그래프인지는 상관없다. 다익스트라 알고리즘 동작과정 - 우선순위 큐 사용을 위해 파이썬 heapq를 사용한다. 최소 힙으로 동작하기 때문에 항상 최단 거리를 pop하게 된다. 1. 최단 거리 테이블을 전부 INF(무한)으로 초기화한다. ( 일반적으로는 INF = int(1e9) 이다.)..

[크래프톤 정글 5기] week02 알고리즘 주차 열한번째 날, 파이썬 나눗셈, 위상 정렬

파이썬 코드에서 a = -7 b = 2 일 때, 1. int(a / b) -> -3 2. a // b -> -4 가 된다. 1번은 a를b로 나눈 후 정수 형태로 바꾸기 위해 소수점 부분을 미련없이 버린다. 반면 2번의 // 연산은 “내림”을 수행한다. -3.5에서 “내림”을 하면 -4가 된다. 만약 양수인 3.5였다면 3이 되었겠지만, 음수에서는 더 작은 수가 -4기 때문에 그렇다. 이것을 신경쓰며 코드를 짤 필요가 있어 보인다. DAG(Direct Acyclic Graph) - 사이클이 없는(비순환적) 방향 그래프 위상 정렬(topological sort) - 사이클이 없는 방향 그래프(DAG)에서 정점들을 순서대로 나열하는 알고리즘. “선후관계를 만족하는 정점의 순서”를 찾는다. - 순서가 정해져 있..

[크래프톤 정글 5기] week02 알고리즘 주차 아홉번째 날, 분할 정복, 뮤터블, 그래프, 트리, DFS/BFS, 이진검색트리, 서로소집합

분할 정복(Divide and Conquer) - 여러 알고리즘의 기본이 되는 해결 방법, 엄청나게 크고 방대한 문제를 작은 단위로 쪼개어, 결과적으로 큰 문제를 해결하는 방법 - 퀵 정렬, 병합 정렬, 이분 탐색 등이 대표적 예시이다. - Divide를 제대로 나누면 Conquer은 자동으로 쉬워지기 때문에 Divide를 잘 설계하는 것이 매우 중요하다. - 분할 정복에서는 재귀 알고리즘이 많이 사용되는데, 이 부분에서 분할 정복의 효율을 깎아내릴 수 있다. 분할 정복의 설계 1. Divide(분할) - 원래의 문제를 분할하여, 비슷한 유형의 하위 문제로 더 이상 분할이 불가능할 때 까지 나눈다. 2. Conquer(정복) - 각 하위 문제를 재귀적으로 해결한다. 더 이상 나눌 수 없는 단위일 때의 탈..

[크래프톤 정글 5기] week01 알고리즘 주차 다섯번째 날, CPU, 인스트럭션, 퀵 정렬(Quick Sort)

버스(Buses) - 시스템 내를 관통하는 “전기적 배선군” - 컴포넌트들 간에 “워드(word)라는 고정 크기의 바이트 단위”로 바이트 정보들을 전송한다 워드(word) - 고정 크기의 바이트 단위 - 워드의 바이트 수는 시스템마다 보유하는 기본 시스템 변수이다. - 대부분의 컴퓨터는 4바이트 또는 8바이트의 워드 크기를 갖는다 입출력 장치 - 시스템과 외부세계와의 연결을 담당한다 - 입력 : 키보드, 마우스 등 - 출력 : 디스플레이 등 메인 메모리 - 프로세서(CPU)가 프로그램을 실행하는 동안, 데이터와 프로그램을 모두 저장하는 “임시 저장장치” - 물리적 메인 메모리는 "DRAM칩"들로 구성되어 있음 - 논리적 메모리는 연속적인 바이트들의 배열로, 0부터 시작해서 각각 고유주소(배열의 인덱스)를..

[크래프톤 정글 5기] week01 알고리즘 주차 두번째 날, Big-O, 시간/공간 복잡도

리처드 파인만 공부법- 무언가를 간단하게 설명할 수 없다면, 그것을 제대로 이해하고 있는 것이 아니다- 어린이도 이해할 수 있을 만큼 쉽고 평이한 언어로 설명할 수 있도록 공부해야 함-> 어려운 단어, 문장을 그대로 외우는 게 아닌, 원리를 이해하여 간단히 설명할 수 있도록 연습 알고리즘 평가는 수행 시간/메모리 사용량에 기준을 둔다.시간 복잡도(Time Complexity)- 수행 시간에 해당함- 특정 크기의 입력을 기준으로, “필요한 연산의 횟수” 공간 복잡도(Space Complexity)- 메모리 사용량- 프로그램 실행/완료에 “필요한 메모리 공간” 시간 복잡도와 공간 복잡도는 “반비례”하는 경향이 있다.ex) 실행시간을 줄이면 메모리를 많이 쓰고, 메모리를 적게 쓰면 실행시간이 늘어나고...실제..

[크래프톤 정글 5기] 첫 프로젝트를 마무리하며

4일 전 3월18일 월요일에 아침 7시20분 버스를 타고 수원으로 왔다. 기숙사 키와 정글 로고가 그려진 후드집업과 반팔을 받고, 기숙사에 짐을 풀고, 필요한 물품을 사고. 점심 먹고 14시부터 입소식이 시작되었다. 입소식이 마무리된 16시경부터 생각을 정리할 새도 없이 갑작스럽게 첫 미니프로젝트가 시작되었다. 팀원은 나까지 총 3명. 주제는 "어떤 식으로든 돌아가는 웹 서비스 만들기". 주어진 시간은 3박 4일. 하지만 3박 4일이라고 해도 첫날은 16시부터 시작했고 두번째날은 중간중간 행사가 있어 흐름이 끊겼고, 세번째날만 온전히 집중할 수 있는 날이었다. 게다가 마지막 4일째는 13시30분이 발표였다. 즉.. 말이 3박4일이지 사실상 2박3일이나 다름없었다. 개발이라곤 스프링 CRUD게시판 클론코딩..

[크래프톤 정글 5기] 최종합격 후기

크래프톤 정글 5기에 최종합격했다. 12월 초 지원서를 내고 입학과정을 처음 시작할 때 자기소개서, 1분 자기소개영상, 입학시험, 면접이라는 4중 나생문에 잔뜩 쫄아 있었지만 결국 또 어찌저찌 해냈다. 그래서 오늘은 정글 입학과정에 대한 후기를 작성해 보고자 한다. 크래프톤 정글 홈페이지 : https://jungle.krafton.com/main 정글의 커리큘럼은 개발자가 스스로 성장할 수 있게 돕는, 컴퓨터공학(전산학)기초에 중점을 두었다. 도구(프레임워크 등)를 사용하는 법을 배우는 게 아닌, 어떤 도구를 사용하더라도 본인의 역량을 뽐낼 수 있도록 하는 것이 정글의 목표라고 생각한다. 스스로 생각하고, 발전하고, 응용하고. 기계마냥 같은 코드를 뽑아내는 게 아닌 다양한 상황에서 다양한 해결 방법을 ..

업적 2024.02.06
728x90
반응형