본문 바로가기

전체 글176

[Java] 람다식(Lamda) 개념 및 사용 정리 1. 람다함수 개념 1) 익명함수를 지칭하는 용어(메소드의 이름 필요 없음) 2) 수학에서 사용하는 함수를 보다 단순하게 표현, 함수를 하나의 식으로 표현 3) 함수형 인터페이스의 인스턴스를 생성하여, 함수를 변수처럼 선언 4) 1급 객체 -> Stream API의 매개변수로 전달 가능 2. 람다의 특징 - 람다식 내의 지역변수는 final을 붙이지 않아도 상수로 간주 - 람다식으로 선언된 변수명은 다른 변수명과 중복 불가 - 람다식으로 생성된 순수 함수는 함수형 인터페이스로만 선언 가능 3. 람다의 장단점 1) 장점 - 코드 간결해짐 - 개발자의 의도가 식에 드러나게 되어 가독성이 높아짐 - 함수를 만드는 과정 없이 한번에 처리해 생산성 높아짐 - 병렬 프로그래밍 용이 2) 단점 - 람다를 사용하여 만.. 2023. 6. 20.
(자료구조 & 알고리즘 정리) 분할정복 (2023.06.15) 1. 분할정복 1) 개념 - 분할 : 해결할 문제를 여러 개의 작은 부분으로 나누기 - 정복 : 나눈 작은 문제를 각각 해결 - 통합 : 해결된 답을 모으기 2) 코드 Recursive_Power(x,n) { if (n==1) return x; if n is even y = Recursive_Power(x, n/2); return y*y; else y = Recursive_Power(x, (n-1)/2); return y*y*x; 2. 문제 1) 2023. 6. 15.
(자료구조 & 알고리즘 정리) 완전 탐색, 백트래킹 (2023.06.14) 1. 순열 구현 1) 비트마스킹 input[] numbers[] perm(cnt, flag) { if cnt == N return; for (i from 0 to N-1){ if (flag & 1 i=2, swap(2,2) 후 perm(2) perm(1) return; //[2, 1, 3] //perm(1) swap(0,1) perm(1)-> i=1; swap(1,1) ; perm(2) -> i=2, swap(2,2) 후 perm(3) return; //[2, 3, 1] //perm(1) swap(0,1) perm(1)-> i=2; swap(1,2) ; perm(2) -> i=2, swap(2,2) 후 perm(3) return; //[3, 2, 1] //perm(2) swap(0,2) perm(1)->.. 2023. 6. 14.
(자료구조 & 알고리즘 정리) 트리(Tree) (2023.06.13) 1. 트리 개념 1) 비선형 자료구조 2) 원소들 간에 1:n관계를 가지는 자료구조 3) 상위 원소에서 하위 원소로 내려가면서 확장되는 트리 모양의 자료구조 => 루트노드만 접근할 수 있으면 트리의 모든 노드들을 다 탐색할 수 있게 됨. 4) 용어 노드 : 트리의 원소 트리는 한 개 이상의 노드로 이루어진 유한집합이며 다음 조건을 만족 노드 중 최상위 노드를 루트라 함 나머지 노드들은 분리집합으로 분리 가능 위의 분리집합들은 다시 하나의 트리가 됨(재귀적 정의), 루트의 부트리(subtree)라고 함 간선 : 노드와 노드를 연결하는 선, 부모 노드와 자식 노드를 연결 루트 노드 : 트리의 시작 노드인 최상위 노드(트리 전체 탐색 시 루트노드부터 탐색) 형제 노드 : 같은 부모 노드의 자식 노드들 조상 노.. 2023. 6. 13.
(자료구조 & 알고리즘 정리) 스택, 큐, LinkedList (2023.06.05) 1. 스택(Stack) 1) 개념 - LIFO 방식 (가장 나중에 들어온 데이터가 가장 먼저 나가는 방식) - 모든 연산은 최상단에서 2) 연산 및 시간복잡도 - push : 삽입(가장 상단에 원소 추가) // O(1) - pop : 삭제( 가장 상단에 있는 원소 삭제) // O(1) - top : 조회(가장 상단에 있는 원소 조회) // O(1) - len : stack을 구성하고 있는 원소의 개수 출력 - 탐색(검색) : O(N) - Java에서는 Stack 클래스로 구현되어 있음 3) 관련 문제 및 게시글 링크 2022.10.12 - [Learning-log/Data Structure & Algorithm] - 자료구조 - 순차적 자료구조 : 스택(Stack)(2022.09.22~10.12) 자료구.. 2023. 6. 5.
(자료구조 & 알고리즘 정리) 재귀, 완전탐색, 순열, 조합, 부분집합 정리(2023.06.04) 1. 재귀 1) 개념 - 자기 자신을 다시 호출하는 함수 - 스택에 자료구조가 쌓이는 방식과 동일하게 함수가 쌓여 처리됨. 가장 최근에 호출된 함수가 종료조건(return 혹은 함수 흐름 종료)이 충족되면 함수가 종료되며 가장 상단(최근)에 쌓인 함수가 꺼내져 처리되는 방식을 따름. - 종료 조건 명시 필수. 제대로 명시하지 않을 경우, 함수가 무한히 호출되어 스택 오버플로우 발생될 수 있음. 2) 재귀( vs 반복문) 의 장단점 (1) 장점 가시성이 높음 구현이 쉬움 변수를 많이 만들 필요가 없어짐. (2) 단점 지속적으로 함수를 호출하면서 지역변수, 매개변수, 반환값 모두를 stack에 저장함으로써 선언한 변수만 사용하는 반복문에 비해 메모리를 더 많이 사용. 이는 속도저하로 이어짐. 3) 꼬리재귀 .. 2023. 6. 5.
(스프링MVC1편-백엔드 웹 개발 핵심 기술) 3-(3)JSP로 회원관리 웹 애플리케이션 만들기, (4)MVC패턴 - 개요 - JSP로 회원관리 웹 애플리케이션 만들기 JSP 라이브러리 추가 : build.gradle에! //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 JSP는 꼭 첫 줄 써야 함! JSP에 보통 로직 먼저 넣고 그 밑에 html 넣음 ' 내에 자바코드 그대로 쓸 수 있음 는 자바코드 출력 회원 목록은 이전보다 JSP를 쓰는게 효과가 좋은 걸 확인할 수 있음 하!지!만! JSP를 써도 두 가지 일을 한 페이지에 함께 처리하는 느낌. 서블릿과 JSP의 한계 서블릿으로 개발 시, 뷰 화면을 위한 HTML만드는 작업이 자바코드에 섞여 지저분하고 복잡 .. 2023. 5. 11.
(스프링MVC1편-백엔드 웹 개발 핵심 기술) 3-(1)회원관리 웹 애플리케이션 요구사항, (2) 서블릿으로 회원 관리 웹 애플리케이션 만들기 - 코드 보기 - Member package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; public Member(){} public Member(String username, int age){ this.username = username; this.age = age; } } - MemberRepository package hello.servlet.domain.member; import java.util.ArrayList; import java.ut.. 2023. 5. 10.
(스프링MVC1편-백엔드 웹 개발 핵심 기술) 2-(9) HttpServletResponse 기본 사용법, (10) HTTP응답 데이터 - 단순 텍스트, HTML - HttpServletResponse 기본 사용법 HTTP 응답 메시지 생성하는 역할 헤더 생성 바디 생성 편의 기능제공 : ContentType 헤더를 편리하게 지정, 쿠키 편리하게 생성, Redirect package hello.servlet.basic.response; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; .. 2023. 5. 8.
(스프링MVC1편-백엔드 웹 개발 핵심 기술) 2-(6) HTTP요청 데이터 : GET 쿼리 파라미터, (7) HTTP요청 데이터 : POST HTML Form - HTTP 요청 데이터 : GET 쿼리 파라미터 메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터 전달 검색, 필터, 페이징 등에서 많이 사용 쿼리 파라미터는 URL에 '?'을 시작으로 보낼 수 있으며 추가 파라미터는 '&'로 구분 가능 쿼리 파라미터는 'HttpServletRequest'가 제공하는 메서드를 통해 쿼리 파라미터 편리하게 조회 가능 쿼리 파라미터 조회해보기 package hello.servlet.basic.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.h.. 2023. 5. 4.