목록분류 전체보기 (167)
코디잉
용어 - 루트(root): 가장 윗부분에 위치하는 노드. 하나의 트리에는 하나의 루트가 있음 - 리프(leaf): 트리의 가장 아랫부분에 위치하는 노드 - 레벨(level): 루트로부터 얼마나 떨어져 있는지에 대한 값 (루트의 레벨은 0) - 차수(degree): 노드가 갖는 자식의 수. 모든 노드의 차수가 n 이하인 트리를 n진 트리라고 한다. - 높이(height): 루트로부터 가장 멀리 떨어진 리프까지의 거리 (리프 레벨의 최댓값) 너비 우선 탐색(BFS): 낮은 레벨에서 시작해서 왼쪽 → 오른쪽 방향으로 검색 깊이 우선 탐색(DFS): 리프까지 내려가면서 검색하는 것을 우선순위로 하는 탐색 방법 전위 순회(Preorder): 노드 방문 → 왼쪽 자식 → 오른쪽 자식 중위 순회(Inorder): 왼..
해시법: 검색/추가/삭제를 효율적으로 수행할 수 있는 방법 용어 - 해시 함수(hash function): 키 값을 가지고 해시값을 만드는 과정 - 해시 값(hash value): 해시함수와 키 값을 사용해서 만든 값. 해시 테이블의 인덱스. 데이터에 접근할 때 사용 - 해시 테이블(hash table): 해시 값이 인덱스가 되도록 원래의 키 값을 저장한 배열 - 버킷(bucket): 해시 테이블의 각 요소 충돌(collision): 저장할 버킷이 중복되는 현상 해시 함수는 가능하면 해시 값이 치우치지 않도록 고르게 분포된 값을 만들어야 한다. ① 체인법 (= chaining, 오픈 해시법, open hashing) - 같은 해시 값을 갖는 요소를 연결리스트로 관리 - 각 버킷에 저장하는 값은 '같은 해..
- 선형 리스트: 데이터를 순서대로 나열해 놓은 자료구조 - 스택과 큐도 리스트 구조로 되어 있다. - 연결 리스트를 구현하기 위한 노드의 구조 class Node { E data;// 데이터 Node next;// 다음 노드를 가리키는 포인터 } └→ 필드 data형인 E는 참조형이다. 클래스형 변수인 data는 데이터 그 자체가 아니라 데이터에 대한 '참조' ! 포인터로 연결 리스트 만들기 public class LinkedList { // 노드 class Node { private E data; // 데이터 private Node next; // 다음 노드를 가리키는 포인터 // 생성자 public Node(E data, Node next) { this.data = data; this.next = ..
① 브루트-포스법 - 선형 검색을 확장한 알고리즘 - 문자열의 처음과 과 패턴(찾을 문자열)의 첫 문자가 겹치도록 놓고, 처음부터 순서대로 일치하는지 검사 문자가 일치하면 계속해서 패턴과 텍스트의 문자를 검사하고, 다른 문자가 나오면 검사를 중단하고 패턴을 한 칸 뒤로 옮겨서 반복 - 검사를 진행한 위치를 기억하지 못하고, 계속 패턴의 처음부터 문자열을 비교하므로 효율이 좋지 않다. - 텍스트에 패턴이 여러 개 있으면 가장 처음 발견한 곳의 인덱스를 반환한다. static int bfMatch(String txt, String pat) { int txtPointer = 0; int patPointer = 0; while (txtPointer != txt.length() && patPointer != pa..
집합: 명확한 조건을 만족하는 자료의 모임 집합의 요소에는 순서가 없다. → X = { 1, 5 } == X = { 5, 1 } 집합에 포함되는 요소는 서로 달라야 한다. 집합은 집합을 요소로 가질 수 있다. 집합 A의 모든 요소가 집합 B의 요소 → A ⊂B (A는 B에 포함된다) 집합 A의 모든 요소가 집합 B의 요소이면서 집합 A와 집합 B가 같지 않을 때 → A는 B이 진부분집합이다. 같은 자료형이 모인 집합은 배열로 표현할 수 있다. +) 추가 내용 toString() : 클래스 인스턴스의 데이터를 문자열로 반환하는 메서드 - toString() 메서드를 클래스에서 정의하는 것은 개발자 간의 약속 - java.lang 패키지의 클래스에서 아래와 같이 정의되어 있는 메서드이다. public cla..
공동구매 상세보기 마지막 버튼을 하기 전에, 찜을 한 김에 마이페이지>찜 부분을 먼저 하려고 한다. 마이페이지>찜 페이지로 가는 방법은 2가지이다. 첫 번째 방법) 헤더에 있는 하트 모양(♡) 을 클릭 두 번째 방법) 로그인>마이페이지>찜 페이지 아래 화면은 찜한 상품이 없을 때 보여줄 화면을 미리 만들어 둔 것이다. 두 가지 방법 모두, 로그인하지 않고는 접근이 불가능하다. 로그인하지 않은 상태로 헤더에서 하트(♡) 클릭 시, 로그인 폼으로 이동하며 안내 팝업이 뜬다. 찜이 없을 때와 찜이 있을 때 목록 띄우는 화면을 나눠놔서 먼저 회원의 찜 개수만 먼저 가져왔다. 찜이 없을 때! 저 하트에 마우스 올리면 색깔 변하게 해놨다 ㅋㅅㅋ 그리고 아까 위에서는 있었던 전체선택/선택삭제버튼은 찜이 없을 때는 없..
① 공동구매에 관련된 정보들 가져오기 ② 참여자목록 (참여자들 프로필사진 및 닉네임) ③ 댓글(등록, 수정, 삭제, 고정 처리) ④ 신고팝업, 신고처리(게시물, 댓글) ⑤ 찜(♡) ⑥ 버튼 관련 찜은 쫌 간단하게 끝날 듯?!,,, 찜은 공동구매 버튼 옆에 하트(♡)를 클릭하면 할 수 있다. 찜을 하면, 채워진 하트(♥)로 찜을 해제하면, 빈 하트(♡)로 표시할 것이다. hover 했을 때 CSS도 해놓았다. (마우스 올렸을 때 테두리 색 변화) 클릭 했을 때에는 칠해진 하트로! - 공동구매 게시물 데이터를 읽어올 때, 회원의 해당 게시물 찜 여부에 따라 하트를 다르게 해야한다. 공동구매 게시물 읽어올 때 해당 회원이 해당 공동구매 게시물을 찜 했는지 확인하는 데이터도 넘겨서, 하트를 다르게 띄우도록 처리..
① 공동구매에 관련된 정보들 가져오기 ② 참여자목록 (참여자들 프로필사진 및 닉네임) ③ 댓글(등록, 수정, 삭제, 고정 처리) ④ 신고팝업, 신고처리(게시물, 댓글) ⑤ 찜(♡) ⑥ 버튼 관련 고럼 이제 신고 관련 작업 ㄱㄱ~~ ④ 신고팝업, 신고처리(게시물, 댓글) 공동구매 게시물에서 [신고] 가 두 군데 있다. 위에 게시물 아래 있는 [신고]는 해당 공동구매 게시물을 신고하는 것이고, 댓글 옆에 있는 [신고]는 해당 댓글을 신고하는 것이다. 공동구매 게시물 & 공동구매 댓글 신고 팝업은 동일하다. ④-1) 신고 팝업 신고팝업 레이아웃은 네이버 신고 팝업을 참고,,!! 원래 게시물/댓글 팝업창까지 아예 똑같이 가려고, 팝업창에 보이는 작성자-제목에 대한 정보는 없었는데 그래도 있어야 할 것 같아서 추..
① 공동구매에 관련된 정보들 가져오기 ② 참여자목록 (참여자들 프로필사진 및 닉네임) ③ 댓글(등록, 수정, 삭제, 고정 처리) ④ 신고팝업, 신고처리(게시물, 댓글) ⑤ 찜(♡) ⑥ 버튼 관련 댓글 관련 작업 ㄱㄱ! ③ 댓글(목록, 등록, 수정, 삭제, 고정 처리) ③-1) 댓글 목록 - 댓글은 모든 회원이 등록할 수 있다. - 댓글 고정은 해당 공동구매의 진행자만 본인의 댓글 1개를 제일 상단으로 고정시키는 기능으로, 자신의 댓글을 고정 혹은 고정해제를 할 수 있다. - 본인이 쓴 댓글은 수정 / 삭제가 가능하고, 타회원이 쓴 댓글은 신고할 수 있다. 그래서 회원이 해당 공동구매의 진행자인지, 참여자인지를 구분해야 한다. 세션에 있는 멤버코드와 댓글의 멤버코드, 공동구매 작성자 멤버코드를 비교했다. ..
공동구매 목록을 다 띄웠으니 할 게 또 완전 많은 공동구매 게시물 상세보기....스타트......ㅎㅅㅎ 먼저 예시화면으로 만들어놓은 걸 보면서 해야 할 것들 정리를 해보자면,,! ① 공동구매에 관련된 정보들 가져오기 (메인사진, 상품링크, 카테고리, 제목, 작성자프로필사진, 닉네임, 가격..., 상세내용, 거래위치..등등.....) ② 참여자목록 (참여자들 프로필사진 및 닉네임) ③ 댓글(등록, 수정, 삭제, 고정 처리) ④ 신고팝업, 신고처리(게시물, 댓글) ⑤ 찜(♡) ⑥ 버튼 관련 버튼 종류는 아래와 같이 나눠진다. 공동구매 상태 대상 대상 상태 버튼 모집 비회원, 회원 참여 X 참여자 참여 O 진행자 진행 완료/모집마감/취소 ① 공동구매에 관련된 정보들 가져오기 (메인사진, 상품링크, 카테고리, ..