자료구조 & 알고리즘 21

[자료구조] Deque

DequeDeque (Double_Ended Queue)은 양쪽 끝에서 삽입과 삭제가 가능한 자료구조.Deque은 Queue처럼 한쪽 끝에서 삽입하고 다른 쪽 끝에서 삭제하는 것이 아니라, 양쪽에서 끝에서 자유롭게 삽입과 삭제가 가능.이러한 특성으로 덱은 Stack과 Queue의 특성을 모두 가지고 있음.package deque;import java.util.Deque;import java.util.LinkedList;public class Deque01 { public static void main(String[] args) { Deque deque = new LinkedList(); // 요소 추가 deque.addFirst(1); // 앞쪽에 1 추가 ..

[자료구조] 선형자료구조

Stack과 Queue자료구조의 큰 카테고리인 선형자료구조란?선형 자료구조는 데이터를 일렬로 나열하여 저장하는 구조.데이터가 연속적으로 배열되어 있어 각 요소는 하나의 이전 요소와 하나의 다음 요소만을 참조할 수 있음.이러한 구조는 데이터를 탐색하거나 순차적으로 처리하기에 적합.대표적인 예로 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue) 등이 있습니다.1. 배열(Array)특징: 메모리 상에서 연속된 공간에 데이터를 저장합니다. 인덱스를 이용해 빠르게 접근할 수 있으며, 고정된 크기를 가지는 경우가 많음장점: 인덱스를 통한 빠른 접근(임의 접근)이 가능.단점: 크기가 고정되어 있어, 크기를 초과하면 새로운 메모리 공간을 할당해야 함.2. 연결 리스트(Link..

[자료구조] Queue 구현한 간단한 대기열 시스템

QueueQueue 자료구조의 특성인 FIFO(First In, First Out) 원칙에 따라 순차적으로 입장하는 간단한 코드를 작성package stack;import jdk.jshell.spi.ExecutionControl;import java.util.*;public class Queue02 { public static void main(String[] args) { // Queue - LinkedList로 구현하는 대기번호 Queue queue = new LinkedList(); Timer time = new Timer(); queue.add("김철수"); queue.add("홍길동"); queue.add("양동근"..

[자료구조] Queue

QueueQueue는 FIFO(First In, First Out) 원칙을 따르는 자료구조먼저 들어온 데이터가 먼저 나가는 방식으로 동작하는 선형 자료구조, 선입선출 구조.Java 에서는 java.util.Queue 인터페이스를 통해 구현됨. 주요 클래스는 1. LinkedList 2. PriorityQueue 3. ArrayDequepackage stack;import java.util.ArrayDeque;import java.util.LinkedList;import java.util.PriorityQueue;import java.util.Queue;public class Queue02 { public static void main(String[] args) { // Queue 자료구..

[자료구조] Stack

Stack Stack은 LIFO(Last In, First Out) 원칙을 따르는 자료구조즉, 마지막에 삽입된 데이터가 가장 먼저 제거되는 방식으로, 후입선출 이라고 함Java 에서는 Stack 클래스로 구현이 되어 있음.java.util.Stack 클래스는 Vector 클래스를 상속받은 클래스로, 기본적인 스택 연산을 제공함.package stack;import java.util.Stack;public class Stack01 { public static void main(String[] args) { Stack stack = new Stack(); stack.push(4); stack.push(3); stack.push(2); sta..

자료구조 및 알고리즘 <시간복잡도>

시간복잡도 - 알고리즘의 수행시간을 고려하는 분석 표기법 - 빅-오메가 ( Big-Ω ) : 최선일 때(Best-Case)의 연산 횟수를 나타낸 표기법 - 빅-세타 ( Big-θ ) : 보통일 때(Average-Case)의 연산 횟수를 나타낸 표기법 - 빅-오( Big-O ) : 최악일 때의(Worst-case)의 연산 횟수를 나타낸 표기 연산 횟수 계산법 연산횟수 = 알고리즘 시간복잡도 x 데이터의 크기 시간 복잡도 도출 기준 A. 상수는 시간 복잡도 계산에서 제외한다. B. 가장 많이 중첩된 반복문의 수행 횟수가 시간 복잡도의 기준이 된다.

[프로그래머스] 문자열 섞기

코딩 기초 트레이닝 난이도 : Lv.0 문제설명 길이가 같은 두 문자열 str1과 str2가 주어집니다. 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요. 제한사항 1 ≤ str1의 길이 = str2의 길이 ≤ 10 str1과 str2는 알파벳 소문자로 이루어진 문자열입니다. 입출력 예 str1 str2 str3 "aaaaa" "bbbbb" "ababababab" Solution class Solution { public String solution(String str1, String str2) { String answer = ""; char[] temp1 = str1.toCharArray(); char[] te..

[프로그래머스] 문자 리스트를 문자열로 변환하기

코딩 기초 트레이닝 난이도 : Lv.0 문제설명 문자들이 담겨있는 배열 arr 가 주어집니다. arr 의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 제한사항 1 ≤ arr의 길이 ≤ 200 arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열입니다. 입출력 예 arr result ["a", "b", "c"] "abc" Solution class Solution { public String solution(String[] arr) { String answer = ""; for(String temp : arr){ answer += temp; } return answer; } } 해설 문자가 담겨 있는 배열을 문자열로 바꾸어 출력해주면 되는 문제..

[프로그래머스] 문자열 출력하기

코딩 기초 트레이닝 난이도 : Lv.0 문제설명 문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요. 제한사항 - 1 ≤ str의 길이 ≤ 1,000,000 - str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다. 입출력 예 입력 #1 HelloWorld! 출력 #1 HelloWorld! Solution import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); System.out.println(a); } } 해설 입력받은 문자열 그대로 출력해주면 해결되는 문제이기 때문에, ..