문제 출처 : https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 문제 : 풀이 : T만큼 반복하는 반복문 안에서 N, M과 각 배열 입력받는다. 그리고 각 케이스마다 정답 리턴하는 함수 작성하고 사용한다. arrA, arrB 정렬한 다음 arrA 기준으로 for문 돌리고 그 안에서 이분 탐색 알고리즘 이용해 arrA[i]보다 작은 arrB 개수들 계산해서 구하고자 하는 값 리턴시킨다. 소스코드 ..
테이블 생성 규칙 테이블명 : 객체를 의미할 수 있는 이름으로 단수형 권고, 다른 테이블명과 중복X 컬럼명 : 한 테이블 내에서 컬럼명 중복X, 테이블 생성시 각 컬럼들은 괄호 내에서 콤마로 구분됨, 컬럼 뒤에 데이터 유형이 반드시 지정되어야 함 테이블명 & 컬럼명 사전에 정의된 예약어는 사용 불가, 테이블명과 컬럼명에는 문자, 숫자, 일부기호(_,$,#)만 허용됨, 테이블명과 컬럼명은 반드시 문자로 시작해야함 제약조건명 : 다른 제약조건명과 중복X Oracle의 주요 데이터 타입 CHAR : 고정 문자열, 나머지 공간에 공백이 채워진다. ('AA' = 'AA ') VARCHAR2 : 가변 길이 문자열, 나머지 공간 사용X ('AA != 'AA ') NUMBER : 정수, 실수 등의 숫자정보이다. 전체 ..
SQL의 유형 데이터 정의어(DDL : Date Definition Language) : 데이터의 구조를 정의하기 위한 명령어 CREATE, ALTER, DROP, RENAME, TRUNCATE 데이터 조작어(DML : Data Manipulation Language) : 데이터를 검색 또는 변형하기 위한 명령어 SELETE, INSERT, UPDATE, DELETE 데이터 제어어(DCL : Data Control Language) : 사용자에게 객체에 대한 권한을 부여/취소하기 위한 명령어 GRANT, REVOKE 트랜잭션 제어어(TCL : Transaction Control Language) : 변경 내용을 확정/취소하기 위한 명령어 COMMIT, ROLLBACK DML 데이터 조작어 테이블 구조 확..
성능 데이터 모델링의 정의 데이터베이스 성능을 고려하여 데이터 모델링을 수행하는 것이다. 정규화, 반정규화, 테이블 통합 및 분할, 조인 구조, PK / FK 설정 등이 있다. 수행시점 빠를 수록 좋다. 분석 설계 단계에서 성능 모델링을 수행하게 되면 재업무 비용이 최소화된다. 일반적인 경우 대충 설계해 성능 저하가 오면 그때 해당 부분만 SQL 튜닝한다. 성능 데이터 모델링 진행 순서 1. 정규화를 정확하게 수행한다. 2. 데이터베이스 용량 산정 수행한다. 3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다. (트랜잭션 : 쪼갤 수 없는 업무 처리의 최소 단위) 4. 용량과 트랜잭션의 유형에 따라 반 정규화를 수행한다. 5. 이력 모델의 조정, 인덱스를 고려한 PK/FK의 순서 조정, 슈퍼타입/서브..
문제 출처 : https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 출처2 : https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 출처3 : htt..
문제 출처 : https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 ) 객체 간 비교를 가능하게 해주는 Comparable 인터페이스 이용해서 비교해주면 된다. 여기선 사전식 오름차순 정렬이라 Comparable 인터페이스를 사용했지만, String 사전 역순이였을 경우에는 Comparable이 아니라 Comparator를 사용하는 것이 좋을 것이다. 소스코드 ) import java.util.*; class Words impleme..
x, y 좌표가 n개 주어진다고 하자. x를 기준으로 오름차순 정렬하는데 만약 x가 같다면 y를 기준으로 오름차순 정렬시켜라 라고 하는 문제가 있다면 정렬 기준을 설정해주어야한다. Comparable 인터페이스는 이러한 x, y 값을 가지는 객체간의 비교를 가능하게 해준다. import java.util.*; class Coords implements Comparable { public int x, y; Coords(int x, int y) { this.x = x; this.y = y; } // x값에 의해 정렬하고, x값이 같을 경우 y값에 의해 정렬한다. // CompareTo에서 양수를 리턴 : 두 객체의 자리가 바뀐다. // 음수 or 0을 리턴 : 두 객체의 위치가 바뀌지 않는다. @Overri..
문제 출처 : https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 풀이 ) 내 블로그 카테고리에 시간복잡도 O(N)을 가진 정렬 풀이법이 있다. 바로 생각났다. 수의 크기보다 N이 크다.거기다가 구해야하는 문제들을 보니 카운팅 정렬 알고리즘으로 풀면 괜찮을 것 같다. import java.util.*; import java.io.*; class Main { // 1 2 4 4 6 -> 0 1 1 0 2 0 1 (cntArr[4] = 2) public String..