알고리즘
-
선형자료구조 - 큐알고리즘/이론 2024. 4. 13. 01:28
📌 큐 1. 선입선출(First In First Out; FIFO) 자료구조 - 먼저 들어온 데이터가 먼저 나가는 구조 2. 입력 순서대로 데이터 처리가 필요할 때 사용 - ex) 프린터 출력 대기열, BFS(Breath-First Search) 등 - 프린터 출력 대기열 : 문서 작업 요청 후 여러 개가 쌓이면 가장 먼저 요청한 작업을 수행, PC가 종료되어도 프린터 내부 Pool에서 큐 구조로 먼저 들어온 요청을 수행 - BFS(Breath-First Search) : 트리 구조, 너비 우선 탐색으로 root 상단부터 시작해 아래로 진행하는 데이터 탐색 등 큐 기본 구조 선입선출(FIFO) 구조를 따름 기본적으로 데이터 추가, 꺼내기, 큐 공간 확인 동작으로 이루어짐 큐에서 데이터가 꺼내지는 곳은 ..
-
선형자료구조 - 스택알고리즘/이론 2024. 4. 12. 17:48
📌 스택 1. 후입 선출(Last In First Out; LIFO) 자료구조 - 마지막에 들어온 데이터가 먼저 나가는 구조 2. 데이터가 입력된 순서의 역순으로 처리되어야 할 때 사용 - ex) 함수 콜 스택, 수식 계산, 인터럽트 처리 등 - 함수 콜 스택 : 함수의 내부 함수를 실행하는 전체 로직을 저장하는 공간(fun2 -> fun1 -> main 함수) - 인터럽트 처리 : 로직을 실행하다가 중간에 다른 처리가 필요할 때 사용 (기존 로직을 스택에 저장한 후 중간 처리를 실행한 뒤에 다시 로직 실행) 스택 기본 구조 후입 선출 구조 기본적으로 데이터 추가, 꺼내기, 스택 공간 확인 동작으로 이러우짐 스택 공간 안에 스택 하단(Bottom)과 스택 상단(Top)이 있고, 데이터 삽입(Push)과 ..
-
선형자료구조 - 연결 리스트알고리즘/이론 2024. 4. 4. 11:29
📌 연결 리스트 1. 데이터를 링크로 연결해서 관리하는 자료구조 2. 자료의 순서는 정해져 있지만, 메모리상 연속성이 보장되지 않음 장점 데이터 공간을 미리 할당할 필요 없이 빈 공간에 할당해도 됨 리스트의 길이가 가변적이기 때문에 데이터 추가 / 삭제 용이 (메모리 관리 측면) 단점 연결 구조를 위한 별도 데이터 공간이 필요 배열은 인덱스를 통해 바로 데이터에 접근이 가능했으나 연결리스트는 다음 연결해야하는 데이터를 링크로 연결해서 그 링크에 대한 공간이 필요 연결 정보를 찾는 시간이 필요 (메모리 상 연속된 위치가 아니라면, 접근 속도가 상대적으로 느림) 데이터 추가 및 삭제 시 앞뒤 데이터의 연결을 재구성하는 작업 필요 노드 데이터 저장 단위, 값과 포인트로 구성 포인터 : 다음 노드나 이전 노드의..
-
선형자료구조 - 배열알고리즘/이론 2024. 4. 1. 17:36
📌 배열 1. 많은 수의 데이터를 다룰 때 사용하는 자료구조 2. 각 데이터를 인덱스와 1:1 대응하도록 구성 3. 데이터가 메모리 상에 연속적으로 저장 장점 인덱스를 이용하여 데이터에 빠르게 접근 가능 단점 데이터의 추가 / 삭제가 번거로운 편 미리 최대 길이를 정해서 생성해야함 가변 길이 배열은 배열의 크기를 변경할 때마다 새로운 배열을 생성 데이터 삭제 시 인덱스를 유지하기 위해 빈 공간을 유지해야함 1차원 배열 int[] arr = {1, 2, 3, 4, 5}; for(int item : arr) { System.out.println("item = " + item); } // item = 1 // item = 2 // item = 3 // item = 4 // item = 5 arr[1] = 10..
-
[프로그래머스 level 0] 모스부호(Java)알고리즘/문제 2022. 11. 14. 23:24
🔸 모스부호 [문제설명] 머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요. 모스부호는 다음과 같습니다. morse = { '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f', '--.':'g','....':'h',..
-
[프로그래머스 level 0] 외계행성의 나이(Java)알고리즘/문제 2022. 11. 13. 20:18
🔸 외계행성의 나이 [문제설명] 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요. [제한사항] age는 자연수입니다. age ≤ 1,000 PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다. class Solution { public String solution(int age) { String answ..
-
[프로그래머스 level 0] 배열 원소의 길이(Java)알고리즘/문제 2022. 11. 11. 22:42
🔸 배열 원소의 길이 [문제설명] 문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요. [제한사항] 1 ≤ strlist 원소의 길이 ≤ 100 strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다. class Solution { public int[] solution(String[] strlist) { int[] answer = new int[strlist.length]; int length = strlist.length; for(int i = 0; i < length; i++) { answer[i] = strlist[i].length(); } return answer; } } strlis..