본문 바로가기
반응형

Develop/Coding Test | Algorithm25

원형 큐 1. 원형 큐란?원형 큐(Circular Queue)는 일반적인 큐(Queue)의 한계를 극복한 자료구조로,배열을 원형 형태로 연결하여 큐의 공간을 효율적으로 활용하는 방식이다.✅ 일반적인 큐의 문제점일반적인 선형 큐(Linear Queue)는 enqueue(삽입)과 dequeue(삭제)를 반복하면 배열의 앞쪽 공간이 비어도 재사용할 수 없음즉, 배열의 크기를 초과하면 사용되지 않는 공간이 발생하여 비효율적임✅ 원형 큐의 특징선형 큐의 메모리 낭비 문제를 해결배열의 끝과 시작이 연결된 형태배열을 넘어가면 다시 처음으로 돌아갈 수 있음 (모듈러 연산 활용)2. 원형 큐 vs 선형 큐 비교비교 항목선형 큐 (Linear Queue)원형 큐 (Circular Queue)메모리 활용비효율적 (삭제 후 공간 재사.. 2025. 2. 14.
Tree 전위, 중위, 후위 순회 입력 값1234567 소스코드package algorithm.boj;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class Main { public static void main(String[] args) throws IOException { System.setIn(new FileInputStream("/Users/kdelay/study/programmers/src/main/j.. 2024. 11. 7.
알고리즘 정리 및 예제 ≣ 목차동적 계획법 (Dynamic Programming, DP)예제: 피보나치 수열 (Fibonacci Sequence)  • 문제 설명: 피보나치 수열의 n번째 숫자를 구하는 문제입니다. • 접근 방법: DP를 사용해 재귀적으로 구하는 대신, 중복 계산을 피하고, 계산된 값을 배열에 저장해 최적화를 할 수 있습니다.public class FibonacciDP { public static void main(String[] args) { int n = 10; System.out.println(fibonacci(n)); // Output: 55 } public static int fibonacci(int n) { if (n 추가 예제: 최소 동전 개수.. 2024. 10. 22.
기본 자료구조 및 사용법 정리 ≣ 목차 Array (배열)Java에서 배열은 고정된 크기를 가지며, 인덱스를 통해 빠르게 접근할 수 있는 자료구조입니다.public class ArrayExample { public static void main(String[] args) { // 배열 선언과 초기화 int[] arr = new int[5]; // 크기가 5인 정수형 배열 int[] initializedArr = {1, 2, 3, 4, 5}; // 초기화된 배열 // 배열 값 변경 arr[0] = 10; // 배열 순회 for (int i = 0; i  ArrayList (동적 배열)ArrayList는 동적 크기.. 2024. 10. 22.
예상 알고리즘 문제 Two Sum 문제 개요:  • 배열에서 두 숫자를 찾아서 더했을 때 목표 값이 되는 쌍을 찾는 문제. 해결 방법:  • 배열을 한 번 순회하면서 현재 숫자의 보완 값(목표값 - 현재값)이 해시맵에 있는지 확인합니다. • 해시맵에 없다면, 현재 값을 해시맵에 저장합니다. 이렇게 하면 O(n) 시간 복잡도로 해결 가능합니다.public int[] twoSum(int[] nums, int target) { Map map = new HashMap(); for (int i = 0; i  Merge Intervals 문제 개요:  • 주어진 여러 간격(interval)을 병합하는 문제. 해결 방법:  • 먼저 각 간격을 시작점을 기준으로 정렬합니다. • 각 간격을 순차적으로 순회하면서 겹치는 간격이 있.. 2024. 10. 22.
[백준] JAVA 풀이 - 2805: 나무 자르기 https://www.acmicpc.net/problem/2805 ▶️ 힌트이분 탐색(결과값 (결과값 > 기대값) 인 경우, min = mid + 1; //1씩 증가하면서 확인 ▶️ 풀이 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenize.. 2024. 5. 10.
[백준] JAVA 풀이 - 1181 : 단어 정렬 https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net ▶️ 풀이 Comparator 인터페이스를 처음 써봐서 문제 풀 때 난관이었는데, 작동법이 신기하고 새로워서 재밌었다 :3 유용하게 쓸 수 있으니 중복 제거 소스도 참고할 것! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; .. 2024. 3. 15.
[백준] JAVA 풀이 - 10989 : 수 정렬하기 3 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net ▶️ 풀이 처음에는 시간 초과로 못 풀었었는데 인덱스 활용과 StringBuilder를 적절하게 활용하여 문제 해결 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static void main(String[] args) throws IOException { Buf.. 2024. 3. 14.
[알고리즘] 퀵정렬 Quick Function 퀵정렬 pivot을 이용해서 좌, 우측으로 정렬하는 기법 pivot은 맨 앞, 중간, 맨 뒤 등 임의로 설정할 수 있다. 평균 O(nlogn), 최악일 경우 O(n^2)의 시간 복잡도를 가진다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Main { public static int[] arr; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt.. 2024. 3. 14.
728x90
반응형