본문 바로가기

분류 전체보기

(331)
Room 구조 Room은 SQLite 데이터베이스를 더 쉽게 사용할 수 있도록 도와주는 Android Jetpack 라이브러리야.아래와 같은 장점이 있어:SQL 쿼리를 직접 안 써도 됨 (@Query, @Insert 등 어노테이션으로 대체)컴파일 타임에 쿼리 오류 체크 가능LiveData, Flow 같은 Jetpack 컴포넌트와 통합 가능유지보수 쉬움, 확장성 높음기존 HistoryDatabaseHelper 기반 SQLite 코드를 Room 기반으로 바꿔보자. Room은 세 가지 주요 구성요소로 구성돼:Entity: DB 테이블에 대응되는 클래스DAO (Data Access Object): 데이터베이스에 접근하는 메서드 정의Database: 전체 데이터베이스 구성SQL 문을 쓰는건 똑같은데 이걸 왜 써야하는가?너무 좋..
4장 SQL 내장 함수상수나 속성 이름을 입력 값으로 받아 단일 값을 결과로 반환최초에 선언될 때 유효한 입력 값을 받아야 함선언에 위배된 값이 입력되면 질의는 실행을 중지하고 에러 메시지 출력숫자 함수-> ABS, CEIL, FLOOR, ROUND, LOG, POW, SQRT, SIGN'고객별' 평균 주문 금액을 백원 단위로 반올림한 값을 구하시오SELECT custid '고객번호', ROUND(SUM(saleprice) / COUNT(*), -2) '평균 금액' FROM OrdersGROUP BY custid;문자 함수CONCAT(S1, S2) -> 두 문자열을 연결CONCAT(s1, ' * ', mby, ' = ', mby * s2)도서제목에 야구가 포함된 도서를 농구로 변경 한 후 도서 목록을 보이시오..
3장 데이터베이스 3장SELECT 문 : 데이터를 검색하는 기본 문장열 순서는 결과 테이블의 열 순서를 결정모든 도서의이름과 가격을 검색 SELECT bookname, priceFROM Book; SELECT *FROM Book;Book 테이블의 모든 열을 보여줌중복을 제거하고 싶으면? DISTINCTSELECT DISTINCT publisherFROM Book;WHERE 조건조건에 맞는 검색을 할 때 사용비교, 범위 (BETWEEN), 속성 IN, NOT IN ~~~LIKE '%축구%'IS NULL, IS NOT NULLAND, OR, NOT가격이 10000원 이상 20000 이하SELECT *FROM BookWHERE price BETWEEN 10000 AND 20000;WHERE price IN 연산자는..
1,2 장 데이터베이스 '논리적으로 연관된 데이터'를 모아 '구조적으로 통합'해 놓은 것통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터특징실시간 접근성, 계속적인 변화, 동시 공유, 내용에 따른 참조DBMS는 데이터베이스 시스템의 부분집합이다.데이터베이스 시스템의 구성1.데이터베이스 관리 시스템(DBMS)2.데이터베이스3.데이터 모델 : 데이터가 저장되는 기법계층, 네트워크, 관계(릴레이션 사용), 객체파일 시스템 VS 데이터베이스 시스템별도의 SW 설치가 필요없지만 파일을 다루어야한다.별도의 SW가 필요해 컴퓨터 자원을 쓰지만 편리하다.DBMS 장점데이터를 공유하므로 중복 가능성 적음, 데이터의 일관성 유지, 데이터 구조가 변경되어도 프로그램 수정 필요 없어 독립성 유지SQL : 데이터베이스 시스템에 ..
단절선 https://www.acmicpc.net/problem/11400 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#include iostream>#include vector>#include cstring>#include algorithm> using namespace std; int v, e; vectorint> graph[100004];// dfs 탐색 순서를 visited에 저장int visited[100004];vectorpairint, int>> ans; // 0, start, 1이 들어온다i..
중위 -> 후위, 후위 계산 with 스택 중위 -> 후위는스택에 연산자를 넣는다. 연산자인 경우 while문으로 비교하며 돌린다.while (!is_empty(&s) && (prec(ch) '('은 바로 스택에 push한다.')'을 만나면 스택의 '('을 만날 때까지 pop 해준다.그리고 '('은 후위표기식에 들어가지 않는다. 후위 표기식 계산은스택에 피연산자를 넣는다.연산자를 만나면 스택에서 피연산자 두 개 뽑아서 계산하면 끝123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949..
오큰수 & 오등큰수 오큰수https://www.acmicpc.net/problem/172981234567891011121314151617181920212223242526272829303132333435363738394041424344454647#define _CRT_SECURE_NO_WARNINGS#include stdio.h>#include stdbool.h> struct {    int num;    int idx;}typedef info; int oh[1000004];info st[1000004];int arr[1000004];int genzai = 0; int main() {    int n;    scanf("%d", &n);     // -1로 stack idx 초기화    int genzai = -1;     ..
큐, 스택 직접 구현 스택은 -1로 초기화12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include stdio.h>#include stdlib.h>#define MAX_STACK_SIZE 100 typedef struct {    int* data;    int capacity;    int top;} StackType; void init_stack(StackType* s){    // -1로 초기화    s->top = -1;    s->capacity = 1;    s->data = (int*)malloc(s->capacity * sizeof(int));} int is_empty(StackType* s){    ret..