본문 바로가기

알고리즘65

[자료구조] 04(2). 연결리스트 확장 및 응용 포스팅을 시작하기 전에 코드량이 늘어나면서 포스팅 시간이 늘어나고 있다 ㅜ.. 최대한 빨리 마쳐야지 키워드 #리스트구현 #그룹화 #공유 #원형연결리스트 1. 리스트 확장 grouping & sharing 그룹화 (grouping) 위에서는 모든 데이터원소들이 한 그룹에 속해있는 경우만 살펴봤다. (한 학생의 한 학기 과목 성적이라던지) 그렇다면 각 원소들이 다른 그룹에 속해있다면, 어떻게 구현해야 할까? 원래의 연결리스트 상태로 구현해도 괜찮을까? 헷갈리니까 예시를 들어보자. 대학의 강좌들 Prof. A : DS Prof. B : CS, DB Prof. C : none 다항식의 항들 Exp 1 : 3x^4 Exp 2 : 5x^3, -4 이렇듯 데이터가 다른 그룹에 속해있고, 그걸 구별해줘야하는 상황이라면.. 2022. 8. 20.
[자료구조] 04(1). 연결리스트 구현 포스팅을 시작하기 전에 그림이 들어가면 이해가 더 쉬울것같다는 피드백을 받아서 저번 포스팅에서는 그림을 좀 더 열심히 넣어봤다!! 근데 매번 패드로 그리고 옮기기 조금..조금 귀찮긴 하다 컴퓨터로 그리기 좋은 프로그램(그림판 빼고..!!!) 추천 받습니다... 키워드 #추상자료형 #리스트 #리스트구현 1. 추상자료형 (ADT) ADT(abstract data type) : 데이터구조의 추상형 자료들과 그 자료들에 대한 연산들을 명기한 것으로, 구현 방법을 명시하고 있지 않다는 점이 자료구조와의 차이점이다. 다시 말해, 구체적인 기능의 완성과정을 언급하지 않고 순수하게 기능이 무엇인지를 나열한 것이다. ADT의 구성요소 저장된 데이터 데이터에 대한 작업들 작업 중 발생 가능한 에러 상황들 - 예외(exce.. 2022. 8. 11.
[자료구조] 03. 기초 데이터구조 - 배열, 연결리스트 포스팅을 시작하기 전에 글쓰는게 얼마나 고된 과정이었는지 실감했다... 글 잘쓰는 사람 정말 부럽습니다 최대한 이해하기 쉽게 쓰려고 노력은 하고 있지만 처음으로 써보는 글이다보니 부족한 부분이 스스로도 많이 보인다 피드백은 댓글로 자유롭게 :) 키워드 #실행시간 #의사코드 #데이터구조 #배열 #연결리스트 이번에는 본격적으로 자료구조의 세계를 탐험하기 전 복습 겸 쉬어가는 차원에서 기초 데이터구조에 대해 알아본다. 이미 잘 알고 있는 사람이라면 스킵해도 무관하지만 좀 더 세부적으로 살펴보고자 한 번 다루기로 했다. 1. 데이터구조 후에 다룰 스택, 큐 같은 고급 자료구조형태는 모두 기초 데이터구조를 통해 구현한다. 여기서 말하는 기초 데이터구조는 배열 연결리스트 아마 C언어나 JAVA와 같은 프로그래밍 언.. 2022. 8. 5.
[자료구조] 02. 재귀 포스팅을 시작하기 전에 생각보다 글 쓰는게 빡세다.. (그림파일도) 방학 전까지 포스팅 완료하고 싶다 ㅠㅠㅠㅠ 키워드 #실행시간 #의사코드 #재귀 1. 재귀 (recursive) 정의 단계에서 자신을 재참조하는 알고리즘을 재귀적이라고 한다. Alg sum(n) if (n = 1) return 1 else return n + sum(n-1) 1부터 n까지의 합을 구하는 함수 재귀함수는 두 가지 부분으로 나눌 수 있는데, 재귀 케이스 (recursion) 함수 자기 자신을 호출하는 부분. 차후의 재귀 호출은 작아진 부분 문제(subproblems)를 가지고 작동함 베이스 케이스 (base case) 재귀함수 탈출 조건. 베이스 케이스가 존재해야 재귀 함수 동작을 끝낼 수 있다! 그렇다면 위 alg sum에서.. 2022. 8. 4.
[자료구조] 01. 알고리즘 분석 포스팅을 시작하기 전에 수업 내용에서 배운 내용을 바탕으로 복습하면서 추가적인 정보를 찾아보고, 관련 문제를 풀어보는 것이 이 포스팅 시리즈의 주 목적이다. 키워드 #실행시간 #의사코드 #원시작업 #빅오 1. 실행시간 대부분의 알고리즘은 입력을 출력으로 변환하며, 알고리즘의 실행시간(running time)은 대체로 입력의 크기와 함께 성장한다. 최상 실행시간 (best case running time) 프로그램 실행시간의 하한을 계산한다. 프로그램을 실행할 때 연산이 수행되는 횟수가 최소가 되는 경우 (= 알고리즘이 수행하는 가장 짧은 실행 시간) 하지만 실질적 사용에 있어서 실행시간의 하한 측정은 무의미하기에 거의 사용되지 않는다. ex) 선형탐색에서 탐색할 요소가 목록의 첫 번째에 존재할 경우 평균.. 2022. 8. 3.