분류 전체보기 385

[자료구조 리스트] 배열(Array)

배열(Array)은 동일한 타입의 원소들이 연속적인 메모리 공간에 할당되어 각 항목이 하나의 원소에 저장되는 기본적인 자료구조입니다. 특정 원소에 접근할 때에는 배열의 인덱스를 이용하여 O(1) 시간에 접근할 수 있습니다. 그러나 새 항목을 배열 중간에 삽입하거나 중간에 있는 항목을 삭제하면, 뒤따르는 항목들을 한 칸씩 뒤로 또는 앞으로 이동시켜야 하므로 삽입이나 삭제 연산은 항상 O(1) 시간에 수행할 수 없다. 배열은 이미 정해진 크기의 메모리 공간을 할당받은 뒤 사용해야 하므로, 빈자리가 없어 새 항목을 삽입할 수 없는 상황(Overflow)에 직면할 수도 있습니다. Overflow가 발생하면 에러 처리를 하여 프로그램을 정지시키는 방법이 주로 사용됩니다. 하지만 프로그램 안정성을 향상시키기 위해 ..

Java/자료구조 2023.06.06

[알고리즘 정렬] 삽입 정렬(Insertion Sort)

삽입 정렬(Insertion Sort)이란 앞의 데이터를 정렬해가면서 삽입 위치를 찾아 정렬하는 방식입니다. 알고리즘 복잡도는 O(n^2)입니다. 앞의 원소부터 정렬하면서 비교하는 원소보다 클 경우에 비교를 중단하므로 버블 정렬보다는 빠른 편입니다. 정렬되지 않은 데이터 15 11 1 3 8 ↓ 11 15 1 3 8 ↓ 1 11 15 3 8 ↓ 1 3 11 15 8 ↓ 정렬이 끝난 데이터 1 3 8 11 15 삽입 정렬 구현 코드 pubilc class Main { public static void insertionSort(int[] array) { for (int i = 1; i 0; j--) { if (array[j] < a..

알고리즘/정렬 2023.06.06

[자료구조 리스트] 리스트(List)

리스트(List)는 일련의 동일한 타입의 항목(item)들이 나열된 것을 의미합니다. 스택과 큐 자료구조도 리스트의 일종입니다. 일상에서는 학교의 학생 명단이나 시험 성적, 빌보드 차트, 버킷 리스트 등을 예로 들 수 있습니다. 여기서 말하는 리스트는 전문적 용어보다는, 앞서 설명한 데이터의 나열을 상징하는 표면적 단어로써의 의미가 큰 것 같습니다. 리스트와 관련된 기본 연산에는 k번째 항목을 읽는 접근, 임의의 항목을 찾는 탐색, 새 항목을 추가하는 삽입, 항목을 제거하는 삭제 연산이 있습니다. 이 책에서 리스트 파트에서는 배열, 단순 연결 리스트, 이중 연결 리스트, 원형 연결 리스트만을 담고 있습니다. ※ "자바와 함께하는 자료구조의 이해"라는 책을 참고하여 쓴 게시글입니다. 책에는 없는 내용을 추..

Java/자료구조 2023.06.06

[프로그래머스 코딩테스트] 푸드 파이트 대회(Java)

문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 조건..

[프로그래머스 코딩테스트] 크기가 작은 부분문자열(Java)

문제 설명 숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return 하는 함수 solution을 완성하세요. 예를 들어, t = "3141592"이고 p = "271"인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다. 제한사항 1

[Spring] 4. 데이터베이스 작업

데이터베이스(Database)란 데이터를 보관하기 위한 상자라고 할 수 있습니다. 데이터베이스에서 데이터를 모을 때는 특정한 규칙을 적용하여 데이터를 정리해서 보관합니다. 관계형 데이터베이스(Relational Database)는 데이터를 표 형식으로 표현하고, 여러 표에서 항목의 값 사이에 관계를 맺고 있는 데이터베이스를 말합니다. 데이터베이스의 특징으로는 다음과 같습니다. 실시간 접근성(real time accessibillity): 사용자가 데이터를 요청하면 수 초 내에 결과를 서비스 계속적인 변화(continuous change): 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀜. 삽입, 삭제, 수정 등의 작업을 통해 바뀐 데이터 값을 저장 동시 공유(concurrent s..

Java/Spring 2023.06.05

[알고리즘 정렬] 버블 정렬(Bubble Sort)

버블 정렬(Bubble Sort)이란 인접한 데이터를 비교하며 자리를 바꾸는 방식을 뜻합니다. 가장 큰 데이터를 맨 뒤로 보냅니다. 알고리즘 복잡도는 O(n^2)입니다. 정렬되지 않은 데이터 15 11 1 3 8 ↓ 11 1 15 3 8 ↓ 11 1 3 15 8 ↓ 11 1 3 8 15 ↓ 1 11 3 8 15 ↓ 1 3 11 8 15 ↓ 정렬이 끝난 데이터 1 3 8 11 15 버블 정렬 구현 코드 pubilc class Main { public static void bubbleSort(int[] array) { for (int i = 1; i ar..

알고리즘/정렬 2023.06.05

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

자료구조(Data Structure)는 일련의 동일한 타입의 데이터를 정돈하여 저장한 구성체입니다. 데이터를 정돈하는 목적은 프로그램에서 저장하는 데이터에 대해 접근, 탐색, 삽입, 삭제 등의 연산을 효율적으로 수행하기 위해서이며, 자료구조를 설계할 때는 데이터와 데이터와 관련된 연산을 함께 고려하여 설계해야 합니다. 자료구조의 효율성은 자료구조에 저장된 데이터에 대해 수행되는 연산의 수행 시간으로 측정합니다. 자료구조에 대한 연산 수행 시간 측정 방식은 알고리즘의 성능을 측정하는 방식과 동일합니다. 알고리즘의 성능은 수행 시간을 나타내는 시간 복잡도(Time Complexity)와 알고리즘이 수행되는 동안 사용되는 메모리 공간의 크기를 나타내는 공간 복잡도(Space Complexity)에 기반하여 분..

Java/자료구조 2023.06.05

[프로그래머스 코딩테스트] 저주의 숫자 3(Java)

문제 설명 3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다. 10진법 3x 마을에서 쓰는 숫자 10진법 3x 마을에서 쓰는 숫자 1 1 6 8 2 2 7 10 3 4 8 11 4 5 9 14 5 7 10 16 정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return 하도록 solution 함수를 완성해주세요. 제한사항 1