반응형

프로그래밍 135

[SQLD] SQL 기본 및 활용 Section 01. SQL 기본 (1) SQL기초와 DDL까지

1. 관계형 데이터베이스(Relation Database) 01. 관계형 데이터베이스 1970년대 E.F. Codd박사의 논문에서 처음 소개된 데이터베이스로 릴레이션(Relation)과 릴레이션의 조인 연산을 통해 합집합, 교집합, 차집합 등을 만들 수 있는 특징이 있다. 현재 기업에서 가장 많이 사용하는 데이터베이스로 Oracle, MS-SQL, MySQL, Sybase등의 다양한 RDBMS가 있다 관계형 데이터베이스 집합 연산과 관계 연산 집합 연산 집합 연산 설명 합집합(Union) - 두 개의 릴레이션을 하나로 합하는 것 - 중복된 행(튜플)은 한 번만 조회 차집합(Difference) - 본래 릴레이션에는 존재하지만 다른 릴레이션에는 존재하지 않는 튜플을 조회 교집합(Intersection) -..

[SQLD] 데이터 모델링의 이해 Section 02. Data Model and Performance

1. 정규화 ( Normalization ) 01. 정규화 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법 데이터를 분해하는 과정 반정규화 데이터 중복을 제거하고 데이터 모델의 독립성을 확보함 테이블을 분해해서 각 테이블들의 관련성을 최소화하기 때문에 데이터 모델의 유연성을 높임 따라서 정규화를 수행하면 비즈니스에 변화가 발행해도 데이터 모델의 변경을 최소화 가능 제1정규화~제5정규화까지 있지만 보통 제3정규화까지만 수행 🔍정규화를 수행하지 않으면 부서 테이블과 직원 테이블이 하나로 합쳐져 있을 수 있다. 그러면 어떤 직원의 부서가 아직 정해지지 않았을 때 부서 코드를 임의로 할당해야 하는 등의 문제가 발생한다. 이러한 문제를 이상현상(Anormaly)이라고 함 🎯 정규화 절..

[SQLD] 데이터 모델링의 이해 Section 01. Data Modeling

1. 데이터 모델링의 이해 01. 데이터 모델링 현실 세계를 가상 공간인 데이터베이스로 표현하기 위해 추상화하는 것 데이터 모델링을 하기 위해서는 고객과의 의사소통을 통해 고객의 업무 프로세스를 완전히 이해해야 함 고객의 업무 프로세스를 이해하고 난 뒤에 데이터 모델링 표기법을 사용해서 모델링함. 고객이 쉽게 이해할 수 있도록 복잡하지 않게 모델링 되어야 함 고객의 업무 프로세스를 추상화하고, 소프트웨어를 분석, 설계해 가면서 점점 더 상세해짐 고객의 비지니스 프로세스를 이해하고 비지니스 프로세스의 규칙을 정의한다. 정의된 비지니스 규칙을 데이터 모델로 표현함. 🔍데이터 모델링 표기법 바커 표기법 (Baker Notation) - 영국 컨설팅 회사 CACI에서 처음 개발되었고 바커에 의해 지속적으로 발전..

[코딩테스트] 2021 Dev-Matching: 웹 백엔드 개발자(상반기)다단계 - 칫솔 판매

문제 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 칫솔을 판매하는 다단계 업체에서 위쪽으로 10%씩 떼어줘야 할 때, 각 사람이 가질 돈을 구하는 문제 칫솔 하나당 100원이며, 10%를 떼어주는 금액이 1원 미만이면 떼어주지 않아도 된다. seller, amount의 묶음, 즉 판매량에 seller가 중복해서 들어있을 수 있다. 하지만 seller의 판매 금액을 합쳐서 한번에 계산하면 안된다. 따로따로 계산했을 때 10%가 1원 미만이 되..

[Data Structure] Linear - (2) Linked List - Singly Linked List

링크드 리스트는 파이썬의 리스트처럼 선형 자료 구조로서, 데이터를 순서대로 저장할 수 있고 계속해서 요소를 추가할 수 있다. 이는 데이터와 다음 노드에 대한 레퍼런스를 가진 노드를 사용해 구현하는데, 노드들은 메모리 공간 여기저기 흩어진 상태로 저장되지만 각 노드에는 다음 노드나 이전 노드에 대한 레퍼런스를 가지고 있어서 선형적으로 다음 노드를 탐색할 수 있는 특징이 있다. 싱글리 링크드 리스트 (Singly Linked List) 노드들이 다음 노드에 대한 레퍼런스만을 가진 링크드 리스트를 싱글리 링크드 리스트라고 한다. 다음 노드에 대한 레퍼런스를 가지고 있기 때문에 한 방향으로 탐색할 수 있는 특징이 있다. 노드(Node) class Node: """노드 클래스""" def __init__(self..

[Data Structure] Linear - (1) Array

파이썬 리스트는 c의 배열을 이용해 만들어졌다. 두 자료구조의 큰 차이점은 정적 배열(Static Array)이냐 동적 배열(Dynamic Array)이냐다. c의 배열은 정적배열로서, 처음에 메모리에 배열의 크기를 정해놓고 시작한다. 즉, 크기가 고정되어 있다. 반대로 파이썬의 리스트는 동적배열로, append()메소드를 이용해 데이터를 추가할 때마다 배열의 크기가 가변적으로 늘어날 수 있고 반대로 del 예약어 등으로 크기가 자동적으로 줄어들 수도 있다. 01. 정적 배열 vs 동적 배열 (Static Array versus Dynamic Array) 위에 언급한 것처럼 c의 배열은 정적 배열이고, c의 배열을 이용해 만든 파이썬의 리스트는 동적 배열이다. 정적 배열 우선 c의 배열은 int newA..

[코딩테스트] 연습문제 - 무인도 여행

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154540 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각 무인도의 식량 합계를 리스트로 나타내는 문제 이차원 배열을 읽어야 하며, 어느 점들이 어떤 무인도에 속한 점인지를 파악할 수 있어야 한다 전략 01. DFS X가 아닌 어떤 한 무인도의 점을 찾았다면 그 주변의 모든 이어지는 점을 연달아 찾아서 더해주면 한 무인도의 전체 식량 개수가 된다. 따라서 DFS로 풀되 재귀로 풀면 될 것 같다. 풀이 import sys sys.setrecurs..

[코딩테스트] 연습문제 - 124 나라의 숫자

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어떤 10진수 n을 1, 2, 4로만 구성된 수로 바꾸는 문제 기본적으로 1, 2, 4로 이루어진 3진법이지만 0과 3이 없다는 것에 중점을 둬야 한다. 전략 01. 규칙찾기 전략이라기보다 기본적인 3진법에서는 1, 2, 10, 11, 12, 20, 21, 22, 100, 101, 102, ... 이런 식으로 증가해 간다면 124나라에서는 1, 2, 4, 11, 12, 14, 21, 22, ..

[코딩테스트] 연습문제 - 햄버거 만들기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 차례로 쌓이는 재료의 순서가 1, 2, 3, 1일 경우 햄버거를 만들고 카운트 하는 문제 햄버거를 만들고 나서 남아있는 재료들과 새로 쌓이는 재료가 다시 햄버거가 될 수도 있다. 전략 01. 스택, 클래스 스택에 재료들이 올바른 순서대로 배열되어 있을 때 스택의 내부에서 알아서 판단하게끔 하고 싶었다. Burger클래스를 만들고 원래 재료의 순서와 다른 재료가 들어오면 새로운 Burger인..

[코딩테스트] 연습문제 - 뒤에 있는 큰 수 찾기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr numbers 배열을 순회하면서 현재 값 뒤의 수 중에서 현재 값보다 크면서 가장 가까운 값을 담을 배열을 출력하는 문제 전략 01. 완전탐색 그냥 배열을 순회하면서 뒤에서 본인보다 큰 수가 보이면 그 값을 출력하는 완전탐색 def solution(numbers): answer =[] for i in range(len(numbers)): flag = False for j in range(i..

반응형