전체 글
[데이터베이스 설계] Exerd를 통해 설계해보기
| Exerd를 사용해 설계해보기 - 부트캠프 실습 후 간단하게 배운 내용을 복습하고자 사용법만 간략히 정리하려고 한다. * 참고로 Exerd를 설치하는 방법은 이전 포스팅에서 다루었다. 1. 도구 설명 no 설명 비고 0 Logical / Physical 토글 버튼 1 테이블 생성 칼럼 추가 : [Alt] + [Enter] 2 - 점선 : 비식별 관계 >> pk를 추가하여 연결 - 실선 : 식별 관계 >> fk로 추가하여 연결 3 마우스 우측 클릭 후, [논리/물리 같이 보기] 버튼 터치하면 함께 보기 가능 4 도메인 및 데이터 타입 등에 대한 설명 보기 2. 데이터 타입 및 제약 조건 지정하기 (1) 하단의 데이터 타입 끌어오기 - 하단에 보면 샘플로 만들어진 데이터타입이 이미 있는데 이걸 끌어오는 ..
[데이터베이스 설계] 데이터 모델링
| 모델링이란? - 모델링이란? 비즈니스 목적에 맞게 현실세계의 데이터를 도식화하는 것 - 왜 모델링을 하는가? 비즈니스 목적에 부합하면서도, 효율적인 자원 관리를 하기 위해 - 모델링의 특징 추상화 현실 세계의 실재를 도식화 하는 과정 단순화 현실 세계의 현상을 약속된 규약에 의해 제한된 표기법 및 언어로 쉽게 표현하는 과정 명확화 모두가 이해할 수 있도록 모호함을 제거하고 정확하게 현상을 기술하는 과정 - 모델링을 바라보는 다른 시각 모델링 데이터 업무의 내용 (무엇을 - Data). - 요구사항 X는 어떤 데이터와 연관되는가? 프로세스 업무의 처리 (어떻게 - Process). - 요구사항 X와 연관된 기존 시스템은 뭔가? - 요구사항 X를 위한 전반적인 프로세스는 뭔가? 상관 관계 데이터와 프로세..
[알고리즘] DP (동적 계획법)
| 동적계획법이란? - 복잡한 문제를 여러 개의 간단한 문제로 분리하여 해결하는 방법 - 원리 및 구현 방법 1) 큰 문제를 부분적으로 분리하여 분석한다 --> 부분적인 문제의 결과값은 항상 동일해야한다. 2) 1)을 통해 알게된 규칙을 통해 점화식을 생성한다. 3) 기존 배열과 dp배열을 어떻게 만들지 구상하고 4) 아래 두 가지 방법 중 적절한 구현 방법에 따라 수도 코드를 작성한다. 타뷸레이션 = 바텀-업 - for문을 사용하여 구현 메모이제이션 = 탑-다운 * 이미지 출처 : 나무위키 - 재귀를 사용하여 구현 | 피보나치를 통해 보는 동적 계획법 - 점화식을 통해 재귀로 푼 피보나치 문제 풀이는 아래와 같았다. // 피보나치 수열 // 재귀 (일반풀이 방법) - O(n^2), 계산했던 부분도 다시..
모듈러 산술
| 모듈러 산술 - 모듈러 (=mod = %)는 덧셈, 뺄셈, 곱셈에 있어서 아래와 같은 산술을 할 수 있는 특징이 있다. - 알고리즘 문제를 풀다보면 애매하게 정수 Max값을 넘을랑 말랑 하는 데이터가 있기도 한데, 그럴 때 이 모듈러 산술을 고려해서 문제를 풀면 굳이 Long 타입 변수를 쓰지 않아도 Int만으로 충분히 풀이가 가능하다. (a + b) % C = (a % C + b % C) % C (a - b) % C = (a % C - b % C) % C (a * b) % C = (a % C * b % C) % C | 참고할 만한 문제 https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 ..
[알고리즘] 분할정복
| 분할정복이란? - 폰노이만 구조를 만든 그 폰노이만에 의해 소개된 알고리즘 - 간략하게 말하면, 큰 문제를 작은 단위로 쪼갠 후 다시 조합하여 문제를 해결하는 방법을 말한다. 분할: 문제를 더이상 분할할 수 없을 때까지 동일한 유형의 여러 하위 문제로 나눈다. 정복: 가장 작은 단위의 하위 문제를 해결하여 정복한다. 조합: 하위 문제에 대한 결과를 원래 문제에 대한 결과로 조합한다 *출처 : 나무위키 | 분할정복 과정 1. 문제를 하나 이상의 작은 단위로 분할 2. 작은 단위에서 부분적인 해결 3. 부분들의 해결을 조합해 전체 문제의 해답을 찾는다. function F(x): if F(x)가 간단 then: return F(x)를 계산한 값 else: x 를 x1, x2로 분할 F(x1)과 F(x2)..
[알고리즘] 그리디
| 그리디란? - 그리디 알고리즘은, 매 선택에서 지금 이 순간 가장 최선이라 생각되는 답을 선택해 결과를 도출하는 것을 말한다. - 여기서 Greedy을 직역하면 '탐욕'을 뜻한다. - 왜 '탐욕'이라는 말을 쓸까? 그건 지금 이 순간의 부분적인 최적해가 항상 종합적인 최적해는 아닐 수 있음에도, 욕심쟁이와 같이 지금 보는 이 부분적인 선택이 전체의 최선이라 단정짓기 때문이다. rf. 여러 개의 도시가 연결된 도로가 있고, 그 도로 간에 이동 거리가 각각 다른 상황에서 가장 이동거리가 짧은 거리를 찾아야한다고 할 때, 그리디를 쓰면 가장 짧은 도로들을 선택하는 게 될 수 있다. - 정확함 보다는 적당히 맞는 답을 찾을 때 좋은 알고리즘이다. 따라서, 그리디 알고리즘을 근사 알고리즘으로도 부른다. - 언..
[알고리즘] 탐색 - DFS, BFS, 이진 탐색
| 탐색이란? 주어진 데이터들 중에서 원하는 데이터를 찾아내는 알고리즘 | 탐색의 종류 언제? 특징 시간복잡도 DFS(깊이 우선 탐색) 그래프의 모든 노드를 탐색하고자 할 때 - 재귀 또는 스택을 통해 구현 - 트리의 pre-order, in-order, post-order 순회 모두 DFS이다. * 인접 행렬 : O(V+E) * 인접 리스트 : O(V^2) BFS(너비 우선 탐색) 그래프의 가까운 지점부터 탐색하고자 할 때 - 큐를 통해서 구현 - 트리의 level-order 가 BFS이다. * 인접 행렬 : O(V+E) * 인접 리스트 : O(V^2) 이진 탐색 * DFS, BFS 모두 간선의 갯수가 적을 때에, 인접 리스트를 쓰는게 유리하다. 1. DFS (깊이 우선 탐색) DFS란, 루트에서 시작..
데이터 처리 - View, 함수/프로시져, 트리거
| VIEW - 가상의 읽기 전용 테이블 - 장점 : - 독립성 : 테이블 구조가 변경되어도 뷰를 쓰는 응용 프로그램은 변경하지 않음 - 편리성 : 복잡한 쿼리를 뷰로 생성하여 코드를 간결화 - 보안성 : 계정 권한 수준에 따라 노출되지 않아야 하는 데이터를 숨김 처리 할 수 있음 -- 기본 구문 CREATE VIEW 뷰명 AS SELECT * FROM 테이블명 -- 예시 create view v_member as select m.member_type, m.user_id,m.name, md.mobile_no, md.marketing_yn, md.register_date from member as m join member_detail md on m.member_type = md.member_type and..
데이터 처리 - ALIAS, JOIN, 내장함수, 페이징 처리
| ALIAS와 * (애스터리스크) - ALIAS : 별명, 별칭 - * : 전체 select m.id as 회원아이디, m.password as 비밀번호, m.name as 회원명 from member as m; | JOIN문 - JOIN만 적히는 경우 INNER JOIN이 사용된다. INNER JOIN 키 값 기준 데이터 결합 LEFT JOIN 키 값 기준 데이터 결합 + 좌측의 나머지 RIGHT JOIN 키 값 기준 데이터 결합 + 우측의 나머지 FULL JOIN LEFT데이터 X RIGHT데이터 - 수업에서 제공되었던 테이블은, MEMBER와 MEMBER_DETAIL 이었는데, 이와 같이 회원 정보를 간편 정보 / 상세 정보로 나누어서 필요에 따라 테이블을 조인하는 식으로 사용한다고 한다. -- ..