앞선 v1.0과는 동일하지만 전화번호부 v2.0은 파일로부터 데이터를 읽어오며 데이터를 알파벳 순으로 정렬한다. 데이터를 정렬된 상태로 유지하기 위해서는, 1) Sorting 알고리즘을 사용하거나 2) 새 데이터가 추가될 때마다 자릴 찾아 삽입 하는 방법이 있다. 이 버전은 알파벳 순서대로 정렬해야 하므로 2번으로 프로그래밍한다. #include #include #define MAX 100 #define BUFFER_SIZE 100 char* names[MAX]; char* numbers[MAX]; int n = 0; void add(); void find(); void status(); void remove(); void save(); void load(); int main() { char com[BU..
전체 글
프로그램을 실행하면 화면에 프롬포트($)를 출력하고 사용자의 명령을 기다린다. 1. 새로운 사람을 추가한다. $ add John 01079799898 John was added successfully. 2. 이름으로 전화번호를 검사한다. $ find Henry No person named 'Henry' exists. $ find David 0517778888 3. 전화번호부에 등록된 모든 사람을 출력한다. $ status John 01076769898 David 0517778888 Total 2 persons. 4. 전화번호부에서 삭제한다. $ delete Jim No person named 'Jim' exists. $ delete John John was deleted successfully. 5. 프..
1. 리턴을 제외한 입력문장을 그대로 출력한 후 문장의 길이를 출력한다. (단, 공백문자도 포함해 카운트하며 문장의 앞뒤에 붙은 공백까지 그대로 출력한다.) #include #include #define BUFFER_SIZE 20 int readline(char str[], int lim) { int ch, i = 0; while ((ch = getchar()) != '\n') // 한 문자씩 입력 받음 if (i < lim - 1) str[i++] = ch; str[i] = '\0'; return i; } int main() { char buffer[BUFFER_SIZE]; while (1) { printf("$ "); //fgets(buffer, BUFFER_SIZE, stdin); // 라인 단위의..
1. 문제 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 2. 접근 이 문제는 '그룹단어'의 개수를 찾아내는 문제인데, 이전에 나왔던 문자가 한 번 더 나오면 그룹단어에서 제외된다. 이 예시를 보면, aba abab abcabc a a만 그룹 단어이다. ab aa aca ba bb 위의 예시 또한 aca를 제외한 나머지가 그룹 단어이다. i j 0 1 2 ... a a b ... a[i] = a[j] 일 때 k..
1. 문제 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 2. 접근 이 문제는 n개의 집을 R, G, B를 이용해 이웃과 겹치지 않게 칠하는데 드는 최소 비용을 구해야 한다. n번째까지 드는 비용을 구한 후 3개 중 최소 비용을 찾아내야 한다. 먼저 값을 입력받는 배열 input[1001][3]을 선언한 다음, input[i][0], input[i][1], input[i][2] 에서 i번째 집을 칠했을 때의 최소 비용을 ..
1. 문제 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 2. 문제해석 소수인지 아닌지를 판단하는 함수를 만들어야 한다. int isPrime(int a) { if (a < 2) return -1; // 소수 아님 for (int i = 2; i*i
* SQL SCHEMA - SQL에서의 스키마는 테이블을 포함한 각종 데이터베이스 객체들을 그룹핑하는 단위 - java의 package, C++의 namespace와 같음 - 테이블의 전체 이름은 . - 사용자에게 자신의 이름에 해당하는 schema 생성 1. 테이블 생성 명령어 create table ( 컬럼1 자료형1 [constraint 제약조건명] [제약조건], 컬럼2 자료형2 [constraint 제약조건명] [제약조건], . . . ); * not null : 해당 컬럼이 null 값을 가져서는 안됨을 나타냄 sname nchar(3) constraint snmae_always_exists not null 혹은 snmae nchar(3) not null * primary key 제약 조건 - ..
1. insert : 테이블에 레코드를 컬럼 순서대로 삽입 - 테이블에 레코드를 컬럼 순서대로 삽입insert into values ( . . . ) - 컬럼명을 지정해 삽입insert into (, , ... , )values (, , ... , ) - select 결과 삽입insert into select 문 2. update : 레코드 값 변경 update set , ..., [where 조건식] 3. delete : 테이블 내의 행을 삭제하고 테이블 정의 유지 - 테이블 내의 모든 행 삭제delete - 조건에 해당하는 행들만 삭제delete where 조건식 delete : 행만 삭제, 정의 그대로drop : 행과 정의 모두 삭제 * commit / rollback 1) commit..
DML ? 데이터 조작 언어로, CRUD 연산이 가능해야 한다. - CREATE - READ - UPDATE - DELETE 1. select : 조건에 맞는 데이터 검색 select [컬럼명] from [where 조건식] ex) '산공'과 4학년 학생들의 이름을 찾아라 select sname from STUDENT where dept = '산공' and year = '4'; 기말고사 또는 중간고사의 성적이 90점 이상인 학생들의 학번을 찾아라 select sno from enrol where MIDTERM >= 90 or finterm >= 90; 기말고사 성적이 중간고사 성적보다 좋은 학생들의 학번을 찾아라 select sno from enrol where midterm < finterm; * se..
SQL : DDL, DML, DCL 모두 포함 1) 테이블 생성 create table ( 컬럼1 자료형1, 컬럼2 자료형2 ); * 자주 쓰이는 자료형 - char(n) : 길이가 n인 고정길이 문자열, n보다 짧게 입력된 값은 공백으로 채워짐 - varchar(n) : 길이가 최대 n인 가변길이 문자열, 입력된 길이만큼 저장 - nvarchar2(n) : 길이가 최대 n인 가변길이 유니코드 문자열 2) 테이블 삭제 drop table ; 3) 테이블 삽입 insert into values (컬럼1, 컬럼2, 컬럼3); 4) 테이블 검색 select * from [where ]; ex) create table STUDENT ( sno number(3), sname nvarchar2(4) constrai..