728x90

개발 304

CodingTest - Sorting and Searching(정렬, 이분 검색과 결정 알고리즘)

1. 선택 정렬 2. 버블 정렬 3. 삽입 정렬 4. 삽입 정렬 예제 5. 이분 검색, 결정 알고리즘 6. 이분 검색, 결정 알고리즘 예제 - 선택 정렬 1. 선택 정렬은 정렬 알고리즘 중 하나이다. 2. n(n-1)/2번, 즉 O(n^2)의 시간 복잡도를 가지므로 대규모 데이터에 대해 효율적이지 않다. - 버블 정렬 1. 버블 정렬은 정렬 알고리즘 중 하나이다. 2. 시간 복잡도가 O(n^2)의 시간 복잡도를 가지므로 선택 정렬과 마찬가지로 대규모 데이터에 대해 효율적이지 않다. for(int i=0; itmp) arr[j+1]=arr[j]; else break; } arr[j+1]=tmp; } return arr; 1. 배열의 두번째 인덱스를 기준으로 잡는다. 2. 기준 인덱스보다 작은 인덱스 중 기..

개발/CodingTest 2023.11.08

CodingTest - HashMap, TreeSet (해쉬, 정렬지원 Set)

4.1 map.put(x, map.getOrDefault(x, 0)+1); - map.get()하면 해당 key의 value 값을 가져오는데 getOrDefault를 하면 해당 key의 value가 없으면 defalut로 지정한 값이 입력된다. (위에서는 0에 해당한다.) for (char key : map.keySet()) { // System.out.println(key + " " + map.get(key)); if (map.get(key) > max) { max = map.get(key); answer = key; } } - 향상된 for문을 이용하여 map의 key값을 순회하고 싶아면 keySet() 함수를 사용하면 된다. System.out.println(map.containsKey('A'));..

개발/CodingTest 2023.11.01

CodingTest - Two Pointers, Sliding Window

- Two Pointer Algorithm 1. 배열 또는 리스트에서 두 개의 포인터를 사용하여 원하는 조건을 만족하는 요소나 부분 배열을 찾는 데 사용되는 알고리즘이다. 이 알고리즘은 주로 정렬된 배열 또는 리스트에서 사용되며, 시간 복잡도를 개선하기 위한 효율적인 방법 중 하나이다. - Sliding Window 1. 배열 또는 문자열과 같은 순차적인 데이터 구조를 처리하고 여러 데이터 포인트의 부분집합을 검사하거나 연산하는데 사용되는 알고리즘 기법이다. 3_1 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Mai..

개발/CodingTest 2023.10.19

Spring - 파일 업로드 Re

- Spring은 MultipartFile이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다. - 일반적인 파일 업로드 방법 - 아래 파일 업로드 방법은 가장 기본적인 방법이다. input을 통해 전달받은 file을 파일명 그대로 지정된 위치에 파일을 저장하는 방식이다. - upload-form.html 상품 등록 폼 상품 입력 상품명 파일 1. HTML에서 파일을 전송할 때 form에 enctype="multipart/form-data"를 추가해준다 . 그 이유는 첨부파일의 경우 문자가 아닌 바이너리로 전송해야 하기 때문이다. 2. HTML input의 속성을 file로 지정하게 되면 첨부파일을 추가할 수 있게된다. - SpringUploadController.java @Slf4j @Contro..

CodingTest - Array(1, 2차원 배열) / 2

8. N명의 학생의 국어점수가 입력되면 각 학생의 등수를 입력된 순서대로 출력하는 프로그램을 작성하세요. 같은 점수가 입력될 경우 높은 등수로 동일 처리한다. 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그 다음 학생은 4등이 된다. - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class Main { public int[] solution(int iNum, int[] ints) { int[] answer = new int[iNum]; int tmp = 1; for (int i = 0; i < iNum; i++) { for (int j = 0; j < iNum; j++) { if (ints[i] < in..

개발/CodingTest 2023.10.17

CodingTest - Array(1, 2차원 배열) / 1

1. N개의 정수를 입력받아, 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. (첫 번째 수는 무조건 출력한다) - 방법 1 import java.util.ArrayList; import java.util.Scanner; public class sec2_1 { public ArrayList solution(int num, int[] arr) { ArrayList answer = new ArrayList(); answer.add(arr[0]); for (int i = 0; i < arr.length - 1; i++) { if (arr[i] < arr[i + 1]) { answer.add(arr[i + 1]); } } return answer; } public static void sec2_..

개발/CodingTest 2023.10.16

Spring - Spring Security (Method Security 적용 및 인증 적용 확인)

- Method Security - Method Secuity는 애플리케이션의 메소드 레벨에서 보안 규칙을 정의하고 적용할 수 있게 해주는 기능이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() // .requestMatchers(HttpMethod.POST,"/auth/login").permitAll() // .requestMatchers(HttpMethod.POST,"/auth/signup").permitAll() //위의 방법을 사용하면 무한 페이지 리다이렉트 될 수 있다...? ..

Spring - Spring Security (예외 핸들러 처리, 커스텀 인증 생성)

- Handler - 핸들러(Handler)를 생성하는 이유는 웹 애플리케이션에 특정 이벤트 또는 요청에 대한 사용자 정의 로직을 실행하고 처리하기 위함이다. - SecurityConfig.java @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{ return http .authorizeHttpRequests() ..................... .defaultSuccessUrl("/") //성공한 뒤 이동하는 페이지 .failureHandler(new LoginFailHandler(objectMapper)) //로그인 실패시 발생하는 핸들러 .and() .exceptionHandling(..

Spring - Spring Security (기본 설정, 로그인 폼 커스텀, UserDetailService, 역할 및 권한, remeberMe(자동 로그인))

- Spring Security - Spring Security는 Spring Framework 기반의 애플리케이션에서 보안과 관련된 기능을 처리하는 데 사용되는 강력한 보안 프레임워크이다. - Spring Security를 사용하면 애플리케이션의 인증(Authentication) 및 권한 부여(Authorization) 관련 기능을 구현하고 관리할 수 있다. 1. 인증(Authentication) 1.1. 사용자가 누구인지 확인하기 위한 인증 메커니즘을 제공한다. 1.2. 주요 인증 방식으로는 폼 인증, HTTP 기본 인증, OAuth, LDAP, SSO(Single Sign-On) 등이 있다. 1.3. 사용자 인증 정보는 사용자 이름/암호, 토큰, 인증 서버 등을 통해 확인된다. 2. 권한 부여(Au..

728x90