분류 전체보기
-
[이진탐색] 백준 1920번책/DoIt 알고리즘 코딩테스트 2024. 11. 21. 23:37
문제N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.[입력]첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. [출력]M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 문제 분석주어진 수들의 존재여부를 찾아야하므로, 탐색 알고리즘을 선택해야한다.자연수의 범위가 100,000이므로 N^2 의 시간복잡도를 가지는 탐색알고리즘을 사용하면 안된다.고로, 이진탐색을 사용하여 (O..
-
이진탐색알고리즘 2024. 11. 21. 23:17
이진탐색이란?원하는 데이터를 빠르게 찾기 위한 알고리즘이진 탐색은 데이터가 정렬되어있는 상태에서 중앙값을 이용해서 찾고자 하는 값과 비교해가며 찾는 알고리즘(코딩테스트에서 부분 문제로 많이 출제 됨)기능특징시간복잡도Target 데이터 탐색중앙값 비교를 통한 대상 축소 방식O(logN) 이진탐색 핵심이론pre) 오름차순으로 정렬현재 데이터 셋에서 중앙값을 설정한다중앙값 > Target 값 일때, 중앙값 기준으로 왼쪽 데이터 셋 설정중앙값 1~3을 반복하다가, 중앙값 == Target 일때 탐색 종료 EX) 48을 찾아라20303340 454850xxxx454850xxxxx48 (탐색 종료)50 이진탐색 구현import java.util.Arrays;public class App { public sta..
-
-
[기능구현#6] DataSource프로젝트/게시판 프로젝트 2024. 11. 20. 22:24
DataSource 란?DataSource는 JDBC를 이용하여 DB를 연결시에 도와주는 객체이다.DataSource는 DB연동을 위한 작업을 중간에서 도와주며, Connection Pool를 이용하여 커넥션 관리를 용이하게 도와준다.DataSourceUtils를 이용하면, 커넥션의 반환도 관리할 수 있어서 트랜잭션을 시행할때 많은 도움을 받을 수 있다/현재 프로젝트에 적용되어있으며, h2DataBase의 드라이버를 사용하지 않고도 DataSource를 이용하여 손쉽게 연결하며 ConnectionPool도 구성할 수 있었다. DataSource 구현DataSource ConfigDataSource는 인터페이스이고, Hikari를 이용하여 구현체를 사용public class DataSourceConfig ..
-
[기능구현#5] 파일 업로드프로젝트/게시판 프로젝트 2024. 11. 20. 22:12
파일 업로드기본적으로, 파일을 업로드하는 방식에는 파일 자체를 받아서 DB에 적재하는 방법이 있고, 파일경로만 저장을 한 후, spring server 에 저장되어있는 파일을 불러와서 사용하는 방식이 있다.DB에 파일을 적재하는 방식은 조회하는데에도 영향이 있고, DB사이즈가 커지는 부담도 있어서 2번째 방식인 파일경로를 저장하는 방식을 택했다.참고)spring의 경우, 기본적으로 파일업로드를 할 수 있는 제한 사이즈는 1MB이다.(spring.servlet.multipart.max-file-size=5MB) application.properties에서 수정 가능함 파일 도메인uploadFile의 이름은 업로드 당시에 사용한 이름storeFileName의 경우 서버에 적재할 파일 이름이다 구분한 이유 :..
-
[기능구현#4] 검증 (Validate)프로젝트/게시판 프로젝트 2024. 11. 20. 21:57
Validate 란?검증을 의미하는 말로, form 또는 객체의 전달과정에서 유효하지 않은 값이 들어올 경우 필터링 하는 역할을 하는 검증 객체이다.주로, spring에서 제공해주는 어노테이션을 사용하거나 직접 구현하여 validate를 구현하게 된다현재 프로젝트에서는 직접 구현한 validate 및 spring 제공 어노테이션 ( + 커스텀 어노테이션 )을 구현하여 사용하였다 Validate 적용1. Spring Annotation 사용@NotNull, @Size, @Email, @Pattern 등을 사용하여 적절한 값을 통해 유효성을 검증controller에서 객체나 form이 들어올 경우, @Validated 혹은 @Valid 과 BindingResult를 통하여 검증을 진행하게 된다 @Getter..
-
[기능구현#3] AppConfig 구성프로젝트/게시판 프로젝트 2024. 11. 20. 21:39
Repository 구성Repository로 의존성을 Interface로 두고, Memory 버전과 DB버전을 나누어서 진행Memory 버전으로 빠르게 개발하고, 후에 DB를 연결시켜서 필요한 부분만 Repository로 진행OCP / DI를 지켜가며 개발 구성 AppConfig@Configuration@ComponentScanpublic class AppConfig implements WebMvcConfigurer { @Bean public MemberRepository getMemberRepository() {// return new MemberMemRespository(); return new MemberDBRepository(DataSourceConfig.da..