전체 글
MySQL DELETE JOIN 사용법
출처 : https://www.mysqltutorial.org/mysql-delete-join/ MySQL DELETE JOIN: Deleting Data from Multiple Tables This tutorial shows you how to delete data from multiple tables by using MySQL DELETE JOIN statement with INNER JOIN and LEFT JOIN. www.mysqltutorial.org 나중에 정리예정
DML (=Data Manipulation Language)
참고 : 데이터리안님의 [백문이불여일타] 데이터 분석을 위한 고급 SQL 강의를 수강하고 복습을 위해 간단히 정리한 글입니다. DML : Data Manipulation Language (데이터 조작어) 1. INSERT (데이터 추가) 2. UPDATE (데이터 업데이트, 수정) 3. DELETE (데이터 삭제) 4. SELECT (데이터 조회, 검색) INSERT 1. 테이블 전체에 데이터 추가하기 (컬럼 순서대로 입력) INSERT INTO 테이블명 VALUES (VALUE_1, VALUE_2, ... , VALUE_K, ... ,VALUE_N); 2. 특정 컬럼들을 선택하여 데이터 추가하기 (선택되지 않은 컬럼은 Default 값이 저장된다) INSERT INTO 테이블명 (COLUMN_LIST)..
[Python] 백준 7576번 토마토
출처 : https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토� www.acmicpc.net 풀이 방법 1. BFS 이용해서 시간 구하고, 2. for문 돌려서 0이 나오면 return -1, 아니면 T 반환. Code from collections import deque # import sys # input = sys.stdin.readline def solve(n, m, board): queue = deque() for i in range(m): for j ..
[SQLD] 2과목 2장 SQL 활용
2과목 2장 SQL 활용 1. 제 1절 표준 조인 2. 제 2절 집합 연산자 3. 제 3절 계층형 질의와 셀프 조인 4. 제 4절 서브쿼리 5. 제 5절 그룹 함수 6. 제 6절 윈도우 함수 7. 제 7절 DCL 8. 제 8절 절차형 SQL 제 1절 표준조인 집합 연산자 : 두 개 이상의 테이블에서 조인을 사용하지 않고 연관된 데이터를 조회할 때 사용 SELECT 절의 칼럼 수가 동일하고 SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환할 때 사용 가능 일반 집합 연산자 1. UNION : 합집합(중복 행은 1개로 처리) 2. UNION ALL : 합집합(중복 행도 표시) 3. INTERSECT : 교집합(INTERSECTION) 4. MINUS/EXCEPT : 차집합(DIFFERE..
[SQLD] 1과목 2장 문제 풀다가 궁금했던 것들
1차 정규화 대상? 컬럼 단위에서 중복되는 경우(=컬럼에 의한 반복적인 속성값을 갖는 형태, 즉 속성의 원자성을 위배한다.) 중복속성에 대한 분리가 1차 정규화의 대상이 된다. 로우 단위의 중복, 컬럼 단위의 중복 둘 다 1차 정규화 대상이다. 정규화? 1차 정규화 : 각 로우마다 컬럼의 값이 하나씩만 있어야 한다. 2차 정규화 : 테이블의 모든 컬럼이 완전 함수적 종속을 만족. 기본키중에 특정 컬럼에만 종속된 컬럼(부분적 종속)이 없어야 함 3차 정규화 : 기본키를 제외한 속성들 간의 이행적 함수 종속이 없어야 함. 기본키 이외에 다른 컬럼이 그 외 다른 컬럼을 결정해선 안된다. BCNF : 3차 정규형을 만족하면서, 모든 결정자가 후보키 집합에 속한 정규형. FK 제약조건? 데이터베이스에 생성하는 F..
[Python/내장함수] 클래스(=Class) 기본 사용 방법
[Python/내장함수] 클래스(=class)란?¶ class : 함수 + 변수 모아놓은 것 오브젝트(object) : 클래스를 써서 만든 것 오브젝트(object) == 인스턴스(instance) 클래스를 정의한 후, 그 클래스를 사용해서 데이터 객체(인스턴스)를 만들 수 있다. 동일한 클래스에 의해 만들어진 각 개체들은 유사한 특징을 공유한다. 모든 인스턴스에서 메서드(=코드)는 동일하지만, 속성(데이터)는 다르다. * 메서드 : 코드 * 속성 : 데이터 * 인스턴스 : 클래스에 의해 만들어진 데이터 객체 ¶ * 모든 클래스는 __init__()이라는 특별한 함수를 갖고 있다. * __init__()함수를 이용해서 객체의 처음상태를 직접 정의할 수 있다. In [69]: # Person 클래스를 정의..
[Python/프로그래머스/2020 KAKAO BLIND RECRUITMENT] 괄호 변환
출처 : https://programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 solution(p)를 해결하기 위해서 3개의 함수를 정의했다. check(array) : array(=리스트)를 입력받아서 올바른 괄호 문자인지 아닌지 여부(T/F)를 return 한다. split_uv(array) : array(=리스트)를 입력받아서 u와 v를 분리해준다. u와 v를 return 한다. dfs(array) : array(=리스트)를 입력받아서 올바른 괄호 문자로 ..
[Python/프로그래머스/2020 KAKAO BLIND RECRUITMENT] 문자열 압축
출처 : https://programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 새로 알게 된 것 >>> s = "interesting" >>> y = s[ : 1000] >>> print(y) "interesting" cs y = s[:1000] 처럼 문자열 슬라이싱 할 때 인덱스 에러가 일어날 것이라고 생각했었는데 그렇지 않았다. Code *주의 : 문자열(s)의 길이가 1인 경우를 간과했었는데, 아마 테스트 케이스 5번의 경우에 해당하는 것 같다. 문자열의 길이가 1인 경우..
[Python/프로그래머스/2019 카카오 개발자 겨울 인턴십] 튜플
출처 : https://programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 팁 Python 기본 내장 함수 중에, eval() 이라는 함수가 있다. eval() 함수 eval()함수는 문자열을 입력받아서, 실행한 결과값을 돌려주는 함수이다. >>> eval('1+2+3') 6 >>> eval('[1,2,3,4,5]') [1, 2, 3, 4, 5] >>> a = 'i n t e r e s t i n g' >>> eval('a.split()') ['i', 'n', '..
[Python/프로그래머스/2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임
출처 : https://programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 각 열(=col)을 딕셔너리에 리스트 형태로 저장해서 pop을 하게 되면, 어떤 인형이 뽑히는지를 간단하게 구현할 수 있다. Code def solution(board, moves): ## 딕셔너리 n = 1 dic = {} for next in map(list, zip(*board)): for i in range(len(next)): if next[i]: next = next[i:]; b..
[Python] 백준 13459번: 구슬 탈출
출처 : https://www.acmicpc.net/problem/13459 13459번: 구슬 탈출 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로 이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다. 입력되는 모든 보드 www.acmicpc.net brute force하게 풀려고 작정하면 이렇게 코드가 길어질수도 있구나 코드의 bfs함수를 자세히 보면 #왼쪽 / #오른..
[Python] 백준 1759번: 암호 만들기
출처 : https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net Code from itertools import combinations L, C = map(int, input().split()) word_list = set(input().split()) ## A(=모음), B(=자음) A = set(['a', 'e', 'i', 'o', 'u']) B = set(['b','c','d','f','g','h','j','k','l','m','n','p','q','..
[Python] 백준 2583번: 영역 구하기
출처 : https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오른쪽 위 꼭짓점의 x, y좌표값이 빈칸을 사이에 두고 차례로 주어진다. 모눈종이의 왼쪽 아래 꼭짓점의 좌표는 (0,0)이고, 오른쪽 위 꼭짓점의 좌표는(N,M)이다. 입력되는 K개의 직사각형들이 모눈종이 전체를 채우는 경우는 없다. www.acmicpc.net 문제 설명 M X N 크기의 모눈종이가 있다. (M, N
[Python] 백준 2933번: 미네랄
출처 : https://www.acmicpc.net/problem/2933 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄�� www.acmicpc.net 문제 설명 창영(=왼쪽), 상근(=오른쪽)이가 번갈아가며 막대기를 던진다. 막대를 던지기 전에 던질 높이를 정한다. 막대는 땅과 수평을 이루며 날아간다. 막대가 미네랄을 만나면, 미네랄은 없어지고 막대기도 그자리에서 소멸된다. 클러스터 : 미네랄 집합이라고 생각하면 된다. 동 서 남 북 으로, 서로 연결되어 있으면 하나의 클러스터이다. 미네랄이 부서짐에 따라, 새로운 클러스터가 생성될 수 있다. 새..
[Python/pandas] Series, DataFrame 기본
[Python / pandas] Series, DataFrame 기본¶ In [48]: import pandas as pd pandas는 numpy를 기반으로 해서 돌아가는 라이브러리이다. Series¶1차원 자료구조로, 리스트 같은 데이터를 받는다. In [49]: s1 = pd.Series([1,2,3,4,5]) s1 Out[49]: 0 1 1 2 2 3 3 4 4 5 dtype: int64 In [50]: s2 = pd.Series(['one', 'two',' three', 'four', 'five']) s2 Out[50]: 0 one 1 two 2 three 3 four 4 five dtype: object DataFrame¶..