출처: https://3months.tistory.com/307 [Deep Play]

전체 글 230

SQL 기본

DML(Data Manipulation Language) 데이터 조작 언어 데이터를 조작(선택,삽입,수정,삭제) 하는 데 사용되는 언어 DML 구문이 사용되는 대상은 테이블의 해 DML을 사용하기 위해서는 꼭 그 이전에 테이블이 정의 되어 있어야 함 SQL문 중 SELECT,INSERT,UPDATE,DELETE가 이 구문에 해당 Transaction이 발생하는 SQL도 이 DML에 속함 테이블의 데이터를 변경(입력/수정/삭제) 할 때 실제 테이블에 환전히 적용하지 않고, 임시로 적용시키는 것 취소 가능 DDL(Data Definition Language) 데이터 정의 언어 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 개체를 생성/삭제/변경 하는 역할 CREATE, DROP, ALTER구문 DDL..

SQL 2022.02.01

[BOJ] 2109 순회공연

https://www.acmicpc.net/status?user_id=yhkim8917&problem_id=2109&from_mine=1 채점 현황 www.acmicpc.net 옛날에 무작정 그리디로 풀었는데 엄청 틀리고 반례는 알게 되었지만 해결하지 못한 문제이다. 저번 학기에 알고리즘 설계와 분석 시간에 해당 문제를 배워서 수월하게 풀 수 있었다. 알설분 시간에는 disjoint set을 구현하여 풀었지만 해당 문제는 d의 값이 최대 10000밖에 되지 않기 때문에 그냥 크기 10000짜리 배열을 선언하여 풀었다. 일단 p와 d값 벡터에 저장 후에 벡터를 p를 기준으로 내림차순 정렬을 한다. 그리고 벡터를 반복문을 돌면서 벡터의 d값에 최대한 가까운 j번째에 p값을 저장해주면 된다. #include ..

백준/Greedy 2022.01.31

[BOJ] 2096 내려가기

https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 사용가능한 메모리가 4MB라는 것을 주의해야 한다. 나는 평소 dp처럼 모든 값을 받고 연산하는 것이 아니라 메모리를 줄이기 위해 값을 받을 때마다 연산하도록 구현하였다. max_배열과 min_배열을 이용하였는데 max_에는 현재까지 내려가는 비용의 최댓값을, min_배열에는 현재까지 내려가는 비용의 최솟값을 저장해 주었다. #include #include #include #include #include #in..

백준/DP 2022.01.31

[BOJ] 17281 ⚾

https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 처음에는 그냥 타자의 순서를 정하는 게 메인인 문제인 줄 알았는데, 그건 기본이고 야구의 득점 시스템을 구현하는 것이 메인이었다. 타자 순서는 그냥 재귀와 반복문을 통해서 구현하였다. 야구의 득점 시스템은 크기가 3인 base라는 bool 순열을 이용하여 base에 사람이 있는지 없는지를 나타내 구현하였다. 안타를 쳤을 경우를 구현하는 것이 어려웠다. 수학적으로 간단히 구현이 가능할 줄 알았는데 경우의..

백준/Simulation 2022.01.31

[BOJ] 1461 도서관

https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 책을 옮길 때 책이 0에 위치하므로, 양수와 음수 중 한 부분을 끝내고 다음에 다른 부분을 끝내는 것이 효율적이기 때문에 책의 위치를 양수부분과 음수 부분으로 나누어서 저장하였다. 양수 부분이든 음수 부분이든 그 절댓값(거리)이 가장 큰 곳을 방문할 때가 M권의 책 중 가장 마지막 책을 옮길 때여야지 이동거리를 최소화 할 수 있다. 따라서 처음에는 M권의 책을 모두 들고가는 것이 아니라 해당 부분(양수..

백준/Greedy 2022.01.21

[BOJ] 16235 나무 재테크

https://www.acmicpc.net/problem/16235 16235번: 나무 재테크 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 www.acmicpc.net 처음 이 문제를 풀 때, priority queue를 이용하여 풀었는데 시간초과가 떴다. 이 문제는 삽입과 삭제가 여러 번 일어나는 문제인데, priority queue를 이용하면 삽입, 삭제가 일어날 때마다 O(logN)의 시간이 필요하게 된다. 잘 생각해보면 처음 문제에서 값을 주어질 때를 제외하고는 반복문이 돌 때 배열에 값들이 작은 값에서 큰 값으로 입력된다. 따라서 처음에..

백준 2022.01.21

[BOJ] 12100 2048(Easy)

https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 이 문제를 풀면서 가장 어려웠던 것은 현재 상태를 저장하는 이중배열을 만드는 것이었다. 함수가 호출 될 때마다, 이중포인터에 공간을 할당하여 이중배열을 만든 뒤 전에 있던 상태를 저장해 주었다. 그 외에 막혔던 부분은 2 2 4 0 0 일 경우 왼쪽으로 움직이면 4 4 0 0 0 이 되어야 하는데 8 0 0 0 0이 되게 구현을 해놓아서 check이라는 배열을 이용하여..

백준/Simulation 2022.01.21

[BOJ] 16918 봄버맨

https://www.acmicpc.net/problem/16918 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net 그래프 이론과 구현이 융합된 문제이다. 처음에 아무것도 일어나지 않아 조금 헷갈리는 문제이나 실버여서 그런지 쉽다. 터져야 되는 폭탄을 queue에 넣고 3초 뒤에 그 size만큼 반복문을 돌리며 폭탄이 설치된 칸과 인접한 네칸을 빈 칸처리 해주었다. #include #include #include using namespace std; int R,C,N; int dx[]={-1,1,0,0}; int dy[]={0,..

백준/Simulation 2022.01.18

[BOJ] 15683 감시

https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 구현문제인데 푸는데 너무 오래 걸렸다. 결국 모든 경우의 수를 다 따져야 하기 때문에 효율적으로 구현하기 보다는 빠르게 구현하는데 초점을 두어야 한다. 구현 문제는 결국 집중력 싸움이라는 것을 잊지말자 ㅎ #include #include using namespace std; int N,M,s; int map[8][8]; vector v; int res=100; void up_count(..

백준/Simulation 2022.01.18

[BOJ] 3190 뱀

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 큰 알고리즘은 없고 그냥 구현 문제이다. 구현 문제를 풀 때 주의할 점은 놓치는 경우의 수가 없는지를 꼭 확인해야 한다는 것이다. 이 문제를 풀면서 뱀의 방향 정보를 모두 입력한 후에 끝나지 않는 경우를 파악하지 못하여 찾는데 상당한 시간을 사용했다. 만약 방향 정보를 모두 입력한 후에도 뱀이 죽지 않았다면 맵의 최대 길이를 실행시간으로 주었다. #include #include using namespac..

백준/Simulation 2022.01.18