본문 바로가기

알고리즘55

[자료구조] Graph 보호되어 있는 글 입니다. 2022. 7. 27.
[자료구조] Tree 1. 트리(Tree)란 나무를 거꾸로 뒤집어 놓은 듯한 구조 하나의 뿌리로부터 가지가 사방으로 뻗은 형태가 나무와 닮아 있다고 해서 트리 구조 단방향 그래프의 한 구조 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조 하나의 데이터 아래에 여러 개의 데이터가 존재할 수 있는 비선형 구조 2.Tree의 특징 루트 (root) 트리 구조의 시작점이 되는 노드 노드 (node) 트리 구조를 이루는 모든 개별 데이터 부모 노드, 자식 노드, 리프 노드(자식이 없는 노드) 깊이 (depth) 루트 노드로 부터 하위 특정 노드까지의 깊이 표현 가능 루트 노드는 지면에 있는 것 같이 깊이가 0 높이 (height) 리프 노드를 기준으로 표현 가능 부모노드는 자식 노드의 높이 중 가장 .. 2022. 7. 27.
[자료구조] Queue 1. 큐(Queue)란 Queue : 줄 서서 기다리다, 대기 행렬 FIFO(First In First Out) 혹은 LILO(Last In Last Out) 입출력 방향 고정, 두 곳으로 접근 가능 Queue에 데이터를 넣는 것을 'enqueue' Queue에서 데이터를 꺼내는 것을 'dequeue’ 2. Queue의 특징 FIFO(First In First Out) 먼저 들어간 데이터가 가장 먼저 나오는 선입선출 구조 예 : 톨게이트에 진입 했을 때, 먼저 온 차가 통행료를 내고 먼저 나간다. 데이터는 하나씩 넣고 뺄 수 있음 Queue의 데이터는 아무리 많아도 하나씩 데이터를 넣고 뺌. 한꺼번에 여러 개를 넣거나 뺄 수 없음 두 개의 입출력 방향을 가지고 있음 Queue는 데이터 입출력 방향이 다름.. 2022. 7. 27.
[자료구조] Stack 1. 스택(Stack) 이란 Stack : 쌓다, 쌓이다, 포개지다 데이터를 순서대로 쌓는 자료구조 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근 LIFO(Last In First Out) 혹은 FILO(First In Last Out) Stack에 데이터를 넣는 것을 ‘PUSH’ Stack에서 데이터를 꺼내는 것을 ‘POP’ 2. Stack의 특징 LIFO(Last in First Oust) 먼저 들어간 데이터가 가장 나중에 나오는 후입선출 구조 예 : 좁은 일방통행길에 들어간 자동차가 막다른 길을 만나면, 맨 마지막에 들어온 차부터 나가야 한다. 데이터는 하나씩 넣고 뺄 수 있음 Stack의 데이터는 아무리 많아도 하나씩 데이터를 넣고 뺌. 한꺼번에 여러 개를 넣거나 뺄 수 없음 하나의 입출력.. 2022. 7. 27.
[자료구조] 재귀 함수(Recursive Function) 1. 재귀 함수란? 자기 자신을 호출하는 함수 장점 불필요하게 여러개의 반복문을 사용하지 않기 때문에 코드가 간결해지고, 수정이 용이 변수를 여러개 사용할 필요 없음 단점 코드의 흐름을 직관적으로 판단하기 어렵 반복하여 매서드를 호출하며 지역변수, 매개변수, 반환값을 모두 process stack에 저장 반복문에 비해서 메모리를 더 많이 사용하게 되어 많은 메모리를 사용 메서드를 호출하고 매서드가 종료된 이후에 복귀를 위한 컨텍스트 스위칭 비용이 발생 사용 조건 문제의 크기를 작은 단위로 쪼갤 수 있어야 함 재귀 호출이 종료되는 시점에 존재해야 함 2. 재귀 함수의 흐름 재귀 함수가 호출되면 복사본 생성 >> 복사본들이 실행 3. 재귀 함수의 탈출 재귀 함수는 탈출 조건이 필요하다. (∵한 번 호출되면,.. 2022. 7. 27.
[알고리즘] What is the Algorithm? 알고리즘이란? '알고리즘'이라는 단어를 들어보신 적이 있나요? 유튜브의 시대를 살고 있는 우리에게 알고리즘이라는 단어는 낯선 단어가 아닐 것 입니다. 유튜브는 사용자의 검색 기록, 시청 영상 등을 분석하여 사용자가 흥미가질 만한 영상을 추천해줍니다. 그렇다면 이 알고리즘, 정의는 어떻게 될까요? 알고리즘은 "어떠한 문제를 해결하기 위한 절차의 집합"이라고 볼 수 있습니다. 이렇게 보면 감이 쉽게 잡히지 않습니다. 예를 들어볼까요? 서울역에서 부산 해운대까지 가는 경로를 알아보려고 합니다. 어떻게 해야 할까요? 경로 찾기 알고리즘을 사용하면 됩니다. 마트에서 물건을 찾는 알고리즘이 존재할 수도 있고, 음식을 만드는 알고리즘이 존재할 수도 있습니다. 새로운 음식을 만들 때, 레시피를 찾아보고 레시피의 순서.. 2022. 7. 27.
[백준 알고리즘] 문제 2557 Q. Hello World!를 출력하시오. 출력 ) Hello World!를 출력하시오. 풀어보기 + IntelliJ 돌려보기 ) package Level1; public class Test2557 { public static void main(String[] args) { System.out.println("Hello World!"); } } ※ 백준 알고리즘은 Main.java 임. 2022. 7. 25.