본문 바로가기

분류 전체보기176

(자료구조 & 알고리즘 정리) 완전 탐색, 백트래킹 (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.