본문 바로가기
728x90

전체 글138

HTTP API기본 API URI를 설계하는 것은 HTTP통신에서 빠질 수 없는 설계다. 어떻게 설계해야 하는지 알아보자!!!!! 우선 - 회원 목록 조회 - 회원 조회 - 회원 등록 - 회원 수정 - 회원 삭제 위의 목록의 URI를 설계해야 한다고 생각해 보자! - 회원 조회 /read-member-list - 회원 등록 / create-member-list - 회원 수정 / update-member - 회원 삭제 / delete-member 이렇게 만들수 있을 것이다. 과연 위의 리스트가 잘 만든 uri일까??? uri에서 가장 중요한 점은 리소스를 식별하는 것이다. 리소스란 - 회원을 등록하고 수정하고 삭제하고 조회하는 것이 아니다!! - 회원이라는 개념 그자체이다. 리소스를 식별하는 방법은 - 회원을 등록하고 수정하.. 2021. 6. 14.
레드블랙트리 레드-블랙트리 - 이진탐색트리의 일종 - 균형잡힌 트리 : 높이가 o(logn) - search, insert, delete연산을 최악의 경우에도 o(logn)시간에 지원 - 각 노드는 하나의 키, 왼쪽 자식, 오른쪽 자식, 부모노드의 주소를 저장 - 자식노드가 존재하지 않을 경우 NIL노드라고 부르는 특수한 노드가 있다고 가정 - 결국 모든 리프노드는 NIL노드 - 루트의 부모도 NIL노드라고 가정 - 노드들은 내부노드와 NIL노드로 분류 * 실제로 구현할 때 NIL노드를 구현하지는 않음 레드-블랙 트리 -> 기본적으로는 이진탐색트리 1. 각 노드는 red 혹은 black 2. 루트노드는 black 3. 모든 리프노드는 black 4. red노드의 자식노드들은 전부 black -> red노드는 연속되어.. 2021. 5. 12.
[백준 14888] 연산자 끼워넣기 [java] 두 개의 배열에 각각 숫자와 연산자를 저장한다 dfs메소드를 재귀함수로 호출할 건데 매개변수로 하나는 현재 연산된 값과 현재 나온 숫자의 개수를 넘겨준다. 예를 들어) 5,6을 숫자로 입력하고 0,0,1,0이 연산자로 입력되면 처음에 5와 1(index)을 매개변수로 넘겨주고 index와 입력받은 숫자의 개수가 같지 않으면 for문을 이용해 연산자 배열을 순서대로 확인한다. 그래서 다음 매개변수는 5*6인 30과 2가 넘어가게 된다. 코드 package baekjoon; import java.util.Scanner; public class operator_embed { public static int MAX = Integer.MIN_VALUE; public static int MIN = Integer.M.. 2021. 5. 12.
[백준 15652] N과 M (4) [java] 이 문제의 핵심은 비내림차순으로 출력해야 한다는 점이다. 즉, 처음 나온 숫자보다 큰거나 같은 수가 옆에 나와야 한다는 것이다. dfs방법으로 문제를 풀건데 원리는 간단하다. 만약 4 4를 입력받은 경우, 우선 가장 처음 나올 수 있는 수는 1 1 1 1 그다음에 나오는 수는 1 1 1 2 그다음은 1 1 1 3 이렇게 만들 수 있다. 쉽게 풀어보자면 배열의 길이를 depth로 보는 것이다. 즉 배열을 끝까지 다 채우면 depth를 만족시키고 return시키는 것이다. return된 다음에는 마지막 1이 들어간 부분만 2로 바꿔주면 된다. 지금까지 설명한 방법은 N과 M(3)을 푸는 방법이다. N과 M(4)에는 비내림차순이라는 조건이 추가됐는데 이것은 dfs를 호출할 때 현재 내 앞에 숫자를 알고 그 숫.. 2021. 5. 12.
[백준 11725] 트리의 부모 찾기 [java] dfs를 이용하여 루트 노드부터 차례대로 아래로 내려가면서 문제를 해결한다. - 1번이 루트노드로 정해졌으므로 1번부터 밑으로 내려가면 된다 - 리스트를 만들어 서로 연결된 노드들을 넣어준다. - dfs 메소드에서 for문을 이용해 차례대로 노드들을 뽑아준다. - 뽑은 노드들을 다시 dfs로 후출하면 된다. * 위에서부터 차례대로 노드를 찾아가므로 부모배열을 만들고 dfs의 매개변수랑 연결된 값의 부모는 매개변수가 된다. 코드 package baekjoon; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class find_treeparent { static int n; static List[] lis.. 2021. 5. 6.
멱집합 멱집합 : 주어진 집합의 모든 부분 집합들로 구성된 집합 data = {a,b,c,d} => 원소의 개수 : 2^4 = 16 ex) a,b,c,d,ab,ac.... *{a,b,c,d,e,f}의 모든 부분집합을 나열하려면 - a를 제외한 {b,c,d,e,f}의 모든 부분집합들을 나열하고 - {a,b,c,d,e,f}의 모든 부분집합에 {a}를 추가한 집합들을 나열한다. => {b,c,d,e,f}의 모든 부분집합에 {a}를 추가한 집합들을 나열하려면 - {c,d,e,f}의 모든 부분집합들에 {a}를 추가한 집합들을 나열하고 - {c,d,e,f}의 모든 부분집합들에 {a,b}를 추가한 집합들을 나열한다. 수도코드 - 처음에 p는 공집합, s는 전체 집합 - s가 공집합이 되면 끝난다 - s의 원소들을 하나씩 꺼.. 2021. 5. 5.
728x90