본문 바로가기

전체 글

(430)
자료구조 프로그래밍 Lab05) 최소 좌향 트리 만들기(Leftist Min Tree, Heap) 자료구조 프로그래밍 Lab05) 최소 좌향 트리 만들기(Leftist Min Tree, Heap) 문제 최소 좌향 트리의 병합 과정은 다음과 같다. 해결 알고리즘 Main 함수.0. TreePointer를 저장할 Queue와 levelOrder로 출력할 Queue2와 Queue에 들어있는 각 Tree들의 size를 저장할 배열 TreeSize를 준비한다.1. 입력파일의 값을 하나씩 읽으면서 NodePointer로 만들어 Queue에 push 한다(이 때, TreeSize에 해당 rear로 1을 넣어준다).2. While 문(queue의 값이 하나가 될 때까지) 반복.3. NodePointer 두개를 pop 해서 minMeld를 통해 합친다.4. 합치면서 TreeSize의 front 인덱스로 접근해서 사이..
자료구조 프로그래밍 Lab04) 그래프 모든 경로 찾기 C (두 vertex 사이) 자료구조 프로그래밍 Lab04) 그래프 모든 경로 찾기 C (두 vertex 사이) 문제 Graph와 Edge를 주어주고 특정 두 vertex를 지정하면 두 vertex 사이의 "모든 경로"를 탐색하여 출력합니다. 해결 알고리즘 알고리즘의 핵심은 dfs입니다. 0. 재귀함수로 구성합니다 void checkPath(int start, int end)1. 함수에서 들어오면 visit 배열을 통해 방문 true 값 주고, start 값을 stack에 push합니다.2. 만약 인자 start == end가 된다면 경로를 한 가지 발견한 것입니다.3. 이 때 stack에 들어온 경로 따라서 출력 후에 도착한 지점(end)를 pop한 후에 함수를 return합니다.4. 발견 못했을 시, 다음 경로를 탐색합니다 (조..
자료구조 프로그래밍 Lab03) 최소힙(Min Heap) 만들기! 문제 최소힙 만들기힙이란 우선순위 큐라고도 불리며 말하는 것으로 다음과 같이 부모 노드의 값의 우선순위 자식 노드의 값의 우선순위보다 높은 상태를 말합니다. 최소힙이란 값이 적은 것이 우선순위가 높은 것으로Root Node에는 큐에서 가장 작은 값이 배정되어 있어야 합니다.위의 우선순위 큐에서도 알 수 있듯이 1이 가장 작은 값이기에 Root Node가 됩니다. 해결 알고리즘 Heap도 일종의 Queue이기에 구현하는 데 있어 고려해야 할 것은 삽입(push)과 삭제(pop), 두 가지 입니다.Push의 경우에는 Heap이라는 1차원 배열에다 값을 추가하는데 우선순위에 맞게 추가하면 됩니다. 123456789101112131415161718192021// heap 삽입함수void minHeap(int d..
자료구조 프로그래밍_Lab02) 역대 최고가 주식 자료구조 프로그래밍_Lab02) 역대 최고가 주식 문제. 어느 기업의 주식가격을 날짜별로Day 1. 100 Day 2. 50 Day 3. 70 Day 4. 60 Day 5. 30 Day 6. 120 Day 7. 50 와 같이 제시한다.해당 주식 가격이 며칠 동안 최고가 였는지를 비교하며 기록하여 비교횟수와 함께 출력한다.단, 단순배열비교와 스택의 두 가지 방법을 사용하여 비교한다. 해결 알고리즘. 주어진 주식가격은 1차원 배열의 Stock에 저장하고각 요일별 최고가는 span에 저장한다. 알고리즘 단순 배열 비교 방법 0. span 기록 배열을 1로 초기화(최소 1일동안 최고가 일 수 있으므로)1. for 문을 통해 2번 째 날짜(인덱스 1) 부터 반복문처리2. count라는 변수를 주어진 날짜 -1 로..
자료구조 프로그래밍_Lab01) 술 취한 바퀴벌레 문제 자료구조 프로그래밍 실습 1. 술취한 바퀴벌레 문제. 문제 내용은 다음과 같습니다. 문제 술취한 바퀴벌레는 M * N 의 이차원 배열을 헤매고 있습니다.전체 배열을 전부 1번 이상 씩 방문할 때까지 Random으로 8방향 중 한 방향으로 이동을 합니다.단 시작점은 [m/2][n/2] 에서 시작합니다. 해결 - 알고리즘 문제 해결의 알고리즘은 다음과 같습니다. 0. 배열 초기화 (0~m+1, 0~n+1)1. 방향 정리 (8방)2. while( 다 방문할 때 까지)을 통한 반복문3. 안에서 rand로 난수 받아서 다음방향 이동(단 , 0또는 m+1, 0또는 n+1 일때는 다시 난수받기)4. 돌면서 방문하는 곳은 0에서 1로 체크 0.배열 초기화는 사이즈 m+2 * n+2 의 배열을 할당합니다그리고 후에 방문..
환영합니다! #1 글을 작성해 보세요. 부지런한경구리님의 회원 가입을 진심으로 축하합니다. 이 글은 비공개로 작성돼 있습니다. '편집'으로 내용을 바꾸시거나, 삭제 후 '새 글을 작성'하셔도 됩니다. 블로그를 간단하게 소개하는 글로 편집해보는 것도 좋겠네요. #2 다양한 스킨이 있어요. 티스토리에 있는 다양한 '스킨'도 살펴 보세요. 블로그나 사이트를 사용하는 목적에 맞게 스킨을 고를 수 있습니다. 어떤 이야기를 주로 하실 건가요? 잘 생각해 보시고, 마음에 드는 스킨을 고르세요. '스킨 커버 편집'을 간단히 하면 멋진 첫 화면을 가질 수 있으니 한 번 해보는 것도 좋겠네요 #3 포럼에서 사람들과 소통하세요. 마지막으로 사용하시다가 티스토리에 대해 궁금한 내용이 있다면 '포럼'을 확인하세요. 찾기 어려울 땐 직접 질..