전체 글
-
[Algorithm] 삽입정렬(Insertion Sort)💻Programming/Algorithm 2024. 3. 28. 18:22
삽입정렬이란? 현재 비교하고자 하는 target과 그 이전의 원소들과 비교하며 자리를 교환(swap)하는 정렬 방법. 선택정렬, 버블정렬과는 다르게 안정 정렬. 삽입정렬의 과정(오름차순 기준) 1. 인덱스 1부터 시작한다. 현재 인덱스를 타겟 인덱스로 하고 변수에 넣는다. 이 변수보다 이전 인덱스가 작으면 이전 인덱스의 값을 그 다음 인덱스에 넣어준다. 2. 만약에 인덱스 2가 타겟이고, 타겟의 값이 인덱스 1보다 작다면 그 다음 인덱스에 넣는다. 또 인덱스 0이 타겟보다 작으면 또 그 다음 인덱스에 넣는다. 그리고 타겟 인덱스의 값을 인덱스 0에 넣어준다. 3. 이를 계속 반복한다. 구현 코드 import java.util.Scanner; public class Main { private int[] s..
-
[SpringBoot] 싱글톤 패턴(singleton pattern) (feat: Spring)💻Programming/SpringBoot 2024. 3. 27. 22:36
싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 메모리 절약을 위해 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말한다. 싱글톤 패턴이 적용된 객체가 필요한 경우는 그 객체가 리소스를 많이 차지하는 역할을 하는 무거운 클래스일 때 적합하다. 싱글톤 패턴의 구현 public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } public v..
-
[Algorithm] 버블 정렬(Bubble Sort)💻Programming/Algorithm 2024. 3. 27. 17:37
버블 정렬이란? 선택 정렬과 유사한 알고리즘으로 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘이다. 이름의 유래로는 정렬 과정에서 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어졌다고 한다. 과정 1. 첫 번째 반복문에서 첫번째 원소와 두 번째 원소를 비교한다. 만약 첫 번째 원소가 더 크면 교환. 두 번째 원소와 세 번째 원소를 비교후 두번째가 크면 교환. 이렇게 해서 n-1번재 원소까지 비교하면 가장 큰 수는 n에 가있게된다. 2. 그럼 n은 가장 큰 수이니까, 다시 n-2원소까지 비교를 반복. 그럼 두 번째로 큰 수가 n-1번에 가게 된다. 이렇게 반복하면 모든 수가 정렬된다. 구현 코드(Java) import java.util..
-
[Algorithm] 선택정렬(Selection Sort)💻Programming/Algorithm 2024. 3. 26. 21:39
선택정렬이란? 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환함으로써 정렬하는 정렬 방법이다. 선택 정렬의 과정 와 같은 원리로 오름차순 정렬이 된다. 1. 현재의 인덱스를 minIndex에 넣어준다. 2. 그 뒤의 인덱스에서 for문을 돌려 만약에 다른 인덱스의 값이 더 작다면 바꿔준다. 이렇게 마지막까지 돌면 minIndex의 인덱스 값은 가장 작은 값을 가진 인덱스일 것이다. 마지막 인덱스는 이미 그 앞의 인덱스를 통해 교체가 되어 가장 큰 수일 것이므로 for문은 n-1번까지만 돌면 된다. 구현 코드 import java.util.Scanner; public class Main { private int[] solution(int n, int[] list) { for..
-
[디자인패턴] 좋은 객체 지향 설계의 5가지 원칙 SOLID(feat: Spring)💻Programming/디자인패턴 2024. 3. 22. 18:45
SOLID 원칙을 알아야 하는 이유 시스템에 새로운 기능이 확장되거나 변경사항이 있는 경우 기존 기능들이 영향을 적게 받는 것이 좋은 설계이기 때문. 이 좋은 설계를 하기 위해 나타난 다섯가지 원칙을 가지고 있는 것이 SOLID원칙이다. 이 원칙을 사용하면 코드를 확장하고, 유지 보수 관리하기가 쉬워지며, 불필요한 복잡성을 제거해 개발의 생산성을 높일 수 있다. 또한, 면접 단골 질문이라고 하니 잘 기억해두면 좋겠다. 1. SRP(Single Responsibility Principle): 단일 책임 원칙 한 클래스는 하나의 책임만 가져야한다. -> 한 클래스가 여러개의 기능을 수행하면 안된다는 것. 만약 한 클래스가 여러개의 기능을 수행하면, 변경이 일어났을 때 수정해야할 코드가 증가. ex. A를 수..
-
[Swift] Sheet과 FullScreenCover, NavigationView💻Programming/Swift 2024. 3. 20. 22:55
.sheet 현재 View에서 약 90%부분 정도 overlay되는 View .sheet 사용 ZStack { // Background Color.cyan.ignoresSafeArea() // Content Button { showSheet.toggle() } label: { Text("Button") .foregroundColor(.cyan) .font(.headline) .padding() .background(.white) .cornerRadius(10) } .sheet(isPresented: $showSheet, content: { SheetBasic2() }) } @State property로 선언한 boolean 타입의 showSheet변수를 isPresent 파라미터에 넘겨준 후, 넘겨줄 V..
-
[SpringBoot] JPA란?💻Programming/SpringBoot 2024. 3. 20. 18:48
JPA(Java Persistence API)란? JPA는 Java 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음 Hibernate, Spring JPA등과 같은 구현체가 있고, 이것의 표준 인터페이스가 JPA이다. -> JPA는 인터페이스 실체적으로 구현된 것이 아니라 구현된 클래스와 매핑해주기 위해 사용되는 프레임워크이다. ORM(Object-Relational Mapping)이란? 자바의 객체와 Relational Database(RDB)를 매핑하는 것으로 DB의 특정 테이블이 자바의 객체로 매핑되어 SQL문을 일일이 작성하지 않고 객체로 구현할 수 있도록 하는 프레임워크이다. 기술적으로는 애플리케이션의 객체를 RDB 테이블에 자동으로 영속..