Coding Test/Data Structure & algorithm 6

[알고리즘] 정렬 (Sorting)

📍정의정렬 : 특정한 기준에 맞게 순서대로 나열하는 방법  📍주요 정렬 알고리즘 ( 로직 & 예시 코드 ) 1. 버블 정렬 ⚙️ 로직인접한 두 요소를 비교하여 크기 순서가 잘못되어 있을 경우, 위치를 바꾼다한 번의 패스가 끝나면 가장 큰 값이 마지막에 위치하여, 남은 요소들에 대해 반복한다.시간 복잡도 : O(n^2)단순, 비효율적 → 작은 데이터셋에 적합하다. 📄 유형 이해 코드public class BubbleSort { public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i arr[j + 1]) { // 위치 바꾸기 ..

[알고리즘] 시간 복잡도 (Time Complexity)

개요 코딩테스트 스터디원의 풀이를 보는데 어느 것이 더 프로그래밍 쪽으로 나은 풀이인지 파악이 어려워 기준을 파악해 보고자, 효율적인 알고리즘을 선택하고자 찾아본 개념  📍정의시간 복잡도 : 알고리즘의 입력 크기에 따라 프로세스가 실행되는 데 걸리는 시간을 수치화 한 것- 컴퓨터의 성능에 따라 실행시간은 달라질 수 있기에, 명령문의 실행 빈도수를 계산하여 실행 시간을 구한다.   📍시간복잡도 분석법빅오 표기법 (최악의 경우): 최악의 입력이 주어졌을 경우의 알고리즘이 수행하는 연산의 수 측정세타 표기법 (평균의 경우) : 모든 입력이 주어졌을 떄의 평균으로 걸리는 시간 측정오메가 표기법 (최선의 경우) : 가장 유리한 입력이 주어졌을 때의 알고리즘이 수행하는 연산의 수 측정  📍빅오 표기법(Big-..

[알고리즘] 그리디(Greedy)

정의 미래를 고려하지 않고 현재 상황에서의 최적의 선택을 하는 방법 특징현재에 집중한 선택단순하고 빠름국소 최적  : 각 단계에서의 선택이 국소적으로 최선이 되는 것을 목표정렬 기법이 함께 사용되는 경우가 많다 : 큰/작은 경우 순, 긴/짧은 경우 순 등 극단적으로 문제에 접근하기 때문 코딩테스트 빈출 유형 & 풀이 방법 예시동전 거스름돈 문제 : 500,100,50,10원을 사용하여  거스름돈 n원을  최소 개수의 동전으로 거슬러줘야 하는 경우 ▶ 가장 큰 단위의 동전을 우선적으로 선택하는 방식회의실 배정 문제  : 여러 회의가 있을 때, 회의가 겹치지 않도록 하면서 가장 많은 회의를 배정하는 경우▶ 끝나는 시간이 가장 빠른 회의부터 선택하는 방식 유형 이해 코드import java.util.Scann..

[자료구조] 큐(Queue)

📌큐 : 선입선출(First In First Out, FIFO)의 자료구조로, 가장 먼저 삽입된 데이터가 먼저 처리된다. 큐 구현 Java에서 큐는 주로 Queue 인터페이스를 사용하고, LinkedList / ArrayDeque / PriorityQueue 클래스를 사용해서 구현할 수 있다.Queue queue = new LinkedList();Queue queue = new ArrayDeque();  기본 메서드offer(E e) : 큐의 맨 뒤에 요소를 추가한다. 성공하면 true, 실패하면 false 반환poll() : 큐의 맨 앞에 있는 요소를 제거하고 반환한다. 큐가 비어있으면 null 반환peek() : 큐의 맨 앞에 있는 요소를 제거하지 않고 반환한다.큐가 비어있으면 null 반환isEm..

[자료구조] 스택(Stack)

📌스택 : 후입선출(Last In First Out, LIFO) 방식을 따르는 자료구조로, 가장 나중에 삽입된 데이터가 가장 먼저 꺼내지는 구조를 가지고 있다. 스택 구현 Deque를 스택처럼 사용Deque stack = new ArrayDeque();Stack 사용Stack stack = new Stack(); 기본 메서드push(E item) : 스택의 맨 위에 요소를 추가pop() : 스택의 맨 위에 있는 요소를 제거하고 반환peek() : 스택의 맨 위에 있는 요소를 제거하지 않고 반환isEmpty() : 스택이 비어 있는지 여부를 확인size() : 스택 안의 요소 개수 반환 코딩 테스트 빈출 유형 괄호 유효성 검사: "다양한 유형의 괄호 (), {}, [] 가 포함된 문자열에서 올바르게 괄호..

[자료구조] 자료구조란?

📌 자료 구조 : 데이터를 효율적으로 저장하고 관리하기 위한 방법 등장 배경 데이터의 양이 많아짐에 따라 데이터를 효과적으로 저장하고 검색하는 방법이 필요해졌고, 이에 따라 불필요한 계산 및 메모리 낭비를 줄일 수 있는 자료구조들이 등장했다.  자료 구조의 종류배열(Array): 동일한 데이터 타입을 가진 요소들을 연속적으로 저장하는 자료구조빠른 조회 : 인덱스 사용고정된 크기 : 데이터를 동적으로 추가/제거 시 비효율적예시 > 고정된 크기의 데이터 저장, 이차원 배열의 행렬 계산 리스트(List):  각각의 데이터 요소(Node)들이 포인터(next)와 키(key)를 가진 자료구조동적 조정 가능 데이터의 삽입/삭제 용이느린 검색 속도 : 인덱스 접근 불가능예시 > 동적 메모리 할당스택(Stack): ..