[웅부의 감자키우기] 4주차

이효원·2024년 2월 21일
0

한빛CS101

목록 보기
13/15
post-thumbnail

팀원들이 만든 문제 기록

# SQL명령어 중 DROPDELETE의 차이는 무엇인가요?
DROP은 DDL명령어로 테이블 자체를 완전히 없애버리는 방식으로 모두 삭제되므로 사용에 주의해야한다. 자동 COMMIT되는 명령어 이므로 되돌릴 수 없다.
DELETE는 DML명령어로 튜플을 삭제하는데 이는 데이터를 하나씩 선택하여 제거하는 방식이다. COMMIT전이면 ROLLBACK으로 되돌릴 수 있다. 원하는 데이터를 골라서 삭제할 때 사용한다.

# primary key에 대해 설명하시오
primary key는 후보키 중 하나를 선정하여 대표로 선정된 키이다. 테이블의 모든 행에는 기본 키가 있어야하며 각각 unique한 값을 가지므로 서로 다른 행은 동일한 기본 키를 가질 수 없다. 기본 키 값은 절대로 null이거나 변동될 수 없다.

# SQL을 분류하고 그에 대하여 설명하시오.
데이터 정의어(DDL) - 데이터베이스의 정의/변경/삭제 목적으로 사용되는 언어
데이터 조작어(DML) - 사용자가 테이블에 입력된 데이터를 처리하는 데 사용되는 언어
데이터 제의어(DCL) - 데이터베이스 관리자가 데이터베이스 보호를 위해 사용자 권한 등을 제어하는 데 사용되는 언어

# 학과명이 primary 키가 아니라 가정했을 때 학과명에는 왜 NULL 값이 들어가도 되는지 설명하시오.
Primary 키는 null 값이 들어가도 되지만 학과명 같은 경우에는 primary key가 아니기 때문에 null값이 들어갈 수 있다.

공통된 문제 : # DBMS는 무슨 역할을 하는지 쓰시오.
A1. 모든 응용 프로개름들이 데이터베이스를 고용할 수 있도록 관리하는 소프트웨어 시스템, 응용프로그램과 데이터베이스의 인터페이스 역할을 한다.
A2. 데이터베이스(DB)를 구축하는 틀 제공하고, 효율적인 데이터 검색/저장 가능합니다. 그리고 데이터베이스(DB)를 보호합니다.
A3. 응용 프로그램이 데이터베이스에 직접 접근하지 못하도록 하는 역할

DP문제 푸는 방식 2가지

1)top-down

위에서 부터 시작하여 최종 답인 DP[N]을 찾기위해 DP[0]까지 내려간 뒤, 해당 결과를 재귀를 통해 전이시켜 재활용한다. 피보나치 수열처럼 f(n)=f(n-2)+f(n-1)의 과정에서 가장 최근의 값을 메모해두었다가 사용하여 'memoization'이라고 부른다.

  • 재귀함수 형태로 코드를 구현하기에 가독성이 좋고 이해가 쉽다
int fibonacci(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;

    if (dp[n] != -1) return dp[n];

    dp[n] = fibonacci(n - 1) + fibonacci(n - 2);
    return dp[n];
 }

2)bottom-up

아래에서 부터 계산하고 이를 누적시켜서 전체 큰 문제를 해결하는 방식이다. 테이블에 내용을 저장된 값을 재활하기에 'tabulation'이라고 이름이 붙었다. 반복을 통해 DP[0]부터 하나씩 채우는 과정인 'table-filling'과 .

  • 가장 작은 문제부터 큰 문제로 점점 확장하는 방식으로 주로 반복문 형태로 구현한다
int fibonacci(int n) {
   dp[0] = 0, dp[1] = 1;
   for (int i = 2; i <= n; i++)
       dp[i] = dp[i - 1] + dp[i - 2];
}

0개의 댓글