728x90
반응형

전체 글 225

[백준/DP/C++] 11057번 오르막 수

https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 원래는 dp[n]으로만 식을 세웠었는데 예시를 적다보니 일의자리 수가 중요하다고 생각되어 일의자리 s를 추가했다 길이가 n이고 일의자리 수가 s인 오르막수의 개수는 길이가 n-1이고 일의자리수가 0부터 s까지인 오르막수의 개수를 모두 더하면 된다 저 sum함수를 너무오랜만에 써봐서 맞게 썼는지 모르겠지만 아무튼 점화식은 맨 아래처럼 만들 수 있다 #include..

알고리즘 2022.12.25

[백준/DP/C++] 1912번 연속합

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net dp배열은 자신의 값으로 초기화해준다 그리고 자신의 왼쪽 dp배열에 자신의 합을더한것 과 자신의 dp배열의 크기를 비교해서 큰 값을 넣어준다 #include using namespace std; int n; int dp[100001] = {0}, a[100001] ={0}; int main(void) { cin >> n; for(int i=1; i> a[i]; dp[i] = a[i]; } for(int i=..

알고리즘 2022.12.25

[백준/DP/C++] 11054번 가장 긴 바이토닉 부분 수열

https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 일단 아이디어는 수열 중 하나를 기준으로 잡고 왼쪽으로는 가장 긴 증가하는 부분수열, 오른쪽으로는 가장 긴 감소하는 부분수열을 계산하려고 했다 동시에 하려다 보니 복잡했는데 따로따로 구해서 더해도 똑같다는 생각이 들어서 그렇게 구현했다 포인트는 두 수열에 모두 자신이 포함되다보니 마지막에 1을 빼줘야한다는 것이다 #include using namespace std; int n; int lis[1001] = {0},l..

알고리즘 2022.12.25

[백준/DP/C++] 11722번 가장 긴 감소하는 부분 수열

https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net for문을 반대로 쓰는게 살짝 헷갈렸는데 가장 긴 증가하는 부분수열이랑 똑같이 풀어주면 된다 #include using namespace std; int n; int dp[1001] = {0}, a[1001] ={0}; int main(void) { cin >> n; for(int i=1; i> a[i]; dp[i] = 1..

알고리즘 2022.12.25

[백준/DP/C++] 2156번 포도주 시식

https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net #include using namespace std; int n; int dp[10001] = {0}, arr[10001]={0}; int main(void) { cin >> n; for(int i=1; i> arr[i]; dp[1] = arr[1]; dp[2] = arr[1] + arr[2]; for(int i=3; i

알고리즘 2022.12.24

[백준/DP/C++] 11727번 2xn 타일링 2

https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 위 그림처럼 점화식은 dp(n) = dp(n-1) + 2 X dp(n-2)가 된다 #include using namespace std; int n; int dp[1001]; int main(void) { cin >> n; dp[1] = 1; dp[2] = 3; for(int i=3; i

알고리즘 2022.12.22

[ORACLE] 테이블 구조 및 데이터 복사

테이블 구조 및 데이터 복사하기 CREATE TABLE 신규테이블명 AS SELECT * FROM 복사할테이블명 [WHERE] 테이블 구조만 복사하기 CREATE TABLE 신규테이블명 AS SELECT * FROM 복사할테이블명 WHERE 1=2 테이블이 존재할경우, 데이터만 복사하기(구조가 같은경우) INSERT INTO 복사대상테이블명 SELECT * FROM 원본테이블명 [WHERE] 테이블이 존재할경우, 데이터만 복사하기(구조가 다를경우) INSERT INTO 복사대상테이블명 (COL1, COL2) SELECT COL1, COL2 FROM 원본테이블명 [WHERE]

DB/ORACLE 2022.12.21

[ORACLE] 중복데이터 조회 및 삭제(ROWID, PARTITION BY 사용)

중복된 데이터를 삭제할때 pk가 있으면 pk를 쓰면 되지만 pk가 없는 경우에는 ROWID를 사용해서 중복데이터를 삭제할 수 있다 ROWID ROWID는 ORACLE 에서 INDEX를 생성하기 위해 내부적으로 사용하는 PSEUDOCOLUMN으로 사용자가 임의로 변경하거나 삭제할 수 없다. ROWID는 테이블에 데이터를 입력하면 자동으로 생성되고 각각 고유의 값을 갖게 된다. 000000 000 000000 000 오브젝트 번호 상대 파일 번호 블록 번호 블록 내 행번호 ex) AAAdtzAAaAAEe0bAAA 1. 오브젝트 번호 : 오브젝트의 고유 번호 2. 상태 파일 번호 : 테이블스페이스에 속해있는 데이터 파일에 대한 상대 파일번호 3. 블록 번호 : 데이터 블록의 위치를 알려주는 번호 4. 블록 내..

DB/ORACLE 2022.12.21
728x90
반응형