전체 글
![[Spring] 순수 자바 코드로 설계하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGKiYE%2FbtrtRWijr4O%2FNza2IREC0tYDvigY590yR0%2Fimg.png)
[Spring] 순수 자바 코드로 설계하기
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 비즈니스 요구사항과 설계 회원 회원 가입, 조회 일반, VIP 두가지 회원 등급 DB 미확정 주문과 할인 정책 회원은 상품을 주문 VIP에게 1000원 할인 (변경 가능) 할인 정책 미확정 미확정인 요구사항이 있어 결정이 어렵다. 하지만 결정이 될 때까지 개발을 미룰수도 없기 때문에 인터페이스를 만들고 구현체를 갈아끼울 수 있도록 설계하는 객체 지향 설계를 적용하여 개발을 시작한다. 회원 도메인 설계 회원 객체 다이어그램 : ..
![[자료구조] Set Collection](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpsLNk%2FbtrtYT5lPpJ%2FHEX6BClvIJhKeYEULGbx7k%2Fimg.png)
[자료구조] Set Collection
Set Collection 저장 순서를 유지하는 List와 다르게 Set은 저장 순서가 유지되지 않고, 객체의 중복 저장이 불가능하며, 하나의 null만 저장할 수 있다. 순서가 유지되지 않기 때문에 당연히 index로 데이터 접근이 불가능하다. Set 인터페이스를 구현한 클래스 HashSet TreeSet LinkedHashSet HashSet 순서대로 입력되지 않고, 일정하게 유지되는 것이 특징이고, 객체의 중복을 허용하지 않는다. 사용 예제) import java.util.HashSet; import java.util.Iterator; class HashSet { public static void main(String[] args) { // Integer 담는 HashSet HashSet set =..
[완전탐색] BOJ 15654 N과 M (5)
15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 1) 아이디어 N개의 숫자 중 중복없이 M개를 순서 있게 나열하는 문제이기 때문에 완전탐색의 순열 문제이다. 각 자리에서 재귀호출로 다음 자리로 올 수 있는 모든 경우의 수를 백트래킹으로 탐색하면 된다. 단, 중복을 허용하지 않으므로 visit[]으로 방문처리를 해서 방문안해본 경우만 탐색한다. 2) 시간복잡도 순열 문제이므로 O(N^M)인데 N과 M의 최댓값이 8 이므로 O(8^8) < 1억 3) 구현 // 언어 : JAVA , (성공/실패) : 1/0..
[Spring 핵심 원리] 객체 지향 설계와 스프링
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 스프링의 역사 EJB(Enterprise Java Beans) 기술은 컨테이너, 설정에 의한 트랜잭션 관리, 분산 기술 ORM 등의 좋은 장점들이 있었지만 사용하기가 너무 복잡하고 느리고 라이프 사이클이 어떻게 돌아가는지도 알기 힘들었다. 그래서 로드 존슨이라는 개발자가 EJB의 문제점을 지적하면서 EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 3만줄 이상의 예제 코드로 선보였다. 이 코드에 Bea..
![[자료구조] LinkedList](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2UA3O%2FbtrtnD4bpIa%2FjYEsfQhTRUL5A32HxAKmX1%2Fimg.png)
[자료구조] LinkedList
LinkedList 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노드와 다음 노드와의 연결을 담당 Linked List 특징 ArrayList에 비해서 데이터의 추가나 삭제가 용이 미리 데이터 공간 할당하지 않아도 됨 ( 배열) 인덱스가 없기에 특정 요소에 접근하기 위해서는 순차 탐색이 필요로 하여 탐색 속도가 떨어짐 배열은 index로 바로 찾음 -> 탐색, 정렬에 유리 연결을 위한 별도 데이터 공간 필요 → 저장공간 효율 떨어짐 LinkedList 직접 구현 class LinkedList { // head 노드 지정 public Node..
![[Algorithm] 완전탐색 - 조합](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxlB56%2FbtrtsUKHLCg%2Fy9ommr6gmTKjBlNulBwjRK%2Fimg.png)
[Algorithm] 완전탐색 - 조합
류호석님의 패스트캠퍼스 강의 자료를 참고하여 정리한 글입니다. 출처 : https://github.com/rhs0266/FastCampus 완전 탐색 문제 해결을 위해 모든 경우를 전부 탐색하는 방법으로 정답을 무조건 구할 수 있다. 장점 : 부분 점수를 얻기 좋음 단점 : 모든 경우의 수를 전부 탐색하기에 시간 복잡도가 높음 완점 탐색 종류 N개중 중복을 허용하여 M개를 순서 있게 나열하기 : 중복순열 N개중 중복없이 M개를 순서 있게 나열하기 : 순열 N개중 중복을 허용하여 M개를 고르기 : 중복조합 N개중 중복없이 M개를 고르기 : 조합 완전 탐색 문제 접근 시 고를 수 있는 값의 종류 파악 중복 여부 순서를 따지는 지 N개중 중복없이 M개를 고르기 : 조합 백준 15652) N과 M (2) htt..
![[Algorithm] 완전탐색 - 중복조합](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWqch6%2FbtrtqOc4ii8%2FnWg31fAsbh0TVWH6pN7GNk%2Fimg.png)
[Algorithm] 완전탐색 - 중복조합
류호석님의 패스트캠퍼스 강의 자료를 참고하여 정리한 글입니다. 출처 : https://github.com/rhs0266/FastCampus 완전 탐색 문제 해결을 위해 모든 경우를 전부 탐색하는 방법으로 정답을 무조건 구할 수 있다. 장점 : 부분 점수를 얻기 좋음 단점 : 모든 경우의 수를 전부 탐색하기에 시간 복잡도가 높음 완점 탐색 종류 N개중 중복을 허용하여 M개를 순서 있게 나열하기 : 중복순열 N개중 중복없이 M개를 순서 있게 나열하기 : 순열 N개중 중복을 허용하여 M개를 고르기 : 중복조합 N개중 중복없이 M개를 고르기 : 조합 완전 탐색 문제 접근 시 고를 수 있는 값의 종류 파악 중복 여부 순서를 따지는 지 N개중 중복을 허용하여 M개를 고르기 : 중복조합 백준 15652) N과 M (..
[자료구조] 배열 (Array), 큐(Queue), 스택(Stack)
배열 (Array) 같은 타입의 데이터를 순차적으로 저장하여 관리 index 번호로 빠른 데이터 접근이 가능 데이터 추가/삭제의 어려움 미리 최대 길이를 지정해야 하고 바꿀 수 없음 ArrayList 클래스로 배열 다루기 // int 형 데이터를 담을 수 있는 가변 길이의 배열 선언 ArrayList list1 = new ArrayList(); // 배열에 아이템 추가 시 add(아이템) 메서드 사용 list1.add(1); list1.add(2); // 배열에 특정 아이템을 읽을 시 get(인덱스번호) 메서드 사용 // (굳이 System.out.println() 을 사용하지 않아도 됨) list1.get(0) // 1 // 특정 인덱스에 해당하는 아이템 변경 시, set(인덱스번호, 변경할값) 메서드..
Wrapper Class
Wrapper Class? 자바의 자료형은 primitive type과 reference type으로 나뉜다. - primitive type : char, int, float, double, boolean 등 - reference type : class, interface 등 기본 자료타입(primitive type) 데이터를 객체(Object)로 표현해야 할 때 객체로 다루기 위해 사용하는 클래스를 wrapper class라고 한다. Wrapper Class 구조도 Wrapper Class를 사용하는 이유 기본 데이터 타입(primitive type)을 Object로 변환할 수 있다. parse + 기본 타입명을 이용해 문자열을 기본 타입 값으로 변환할 때 사용된다. java.util 패키지의 클래스는..
![[Algorithm] 완전 탐색 - 순열](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA0XDY%2FbtrtlTZwE8u%2FpmeKN6wkARMBPJELLAGRK1%2Fimg.png)
[Algorithm] 완전 탐색 - 순열
류호석님의 패스트캠퍼스 강의 자료를 참고하여 정리한 글입니다. 출처 : https://github.com/rhs0266/FastCampus 완전 탐색 문제 해결을 위해 모든 경우를 전부 탐색하는 방법으로 정답을 무조건 구할 수 있다. 장점 : 부분 점수를 얻기 좋음 단점 : 모든 경우의 수를 전부 탐색하기에 시간 복잡도가 높음 완점 탐색 종류 N개중 중복을 허용하여 M개를 순서 있게 나열하기 : 중복순열 N개중 중복없이 M개를 순서 있게 나열하기 : 순열 N개중 중복을 허용하여 M개를 고르기 : 중복조합 N개중 중복없이 M개를 고르기 : 조합 완전 탐색 문제 접근 시 고를 수 있는 값의 종류 파악 중복 여부 순서를 따지는 지 N개중 중복없이 M개를 순서 있게 나열하기 : 순열 백준 15649) N과 M ..