디스크와 파일
CS/데이터베이스2024. 3. 1. 15:21디스크와 파일

기억장치 계층 구조 컴퓨터 시스템에서의 기억장치는 아래의 그림과 같이 계층구조로 구성이 되어있다.▼ 이 중에서 CPU(DBMS)가 다루는 데이터는 메인 메모리, 즉 RAM에 해당하는 데이터이다. "그렇다면 왜 컴퓨터 시스템은 CPU가 다루기 편하지 않게 RAM에 정보를 다 저장하지 않을까?" 메인 메모리에 다 저장하지 않는 이유 비용 첫번째 이유는 비용이다. 같은 용량에 대해 주 기억장치의 비용은 디스크보다 약 100배 정도가 높다. ▼ HDD는 1GB 당 36원인 반면 RAM은 1GB당 4000원 꼴이다. 소멸성 또 다른 이유는 데이터를 유지하기 위함이다. 프로그램이 아무리 오래 돌아가봐야 한 번은 컴퓨터를 종료시키는 때에 같이 종료된다. 그러나 메인 메모리는 소멸성 메모리이기 때문에 프로그램이 종료되..

B+ Tree
CS/데이터베이스2024. 3. 1. 15:05B+ Tree

개론 전에 배운 B트리는 구조 변경이 자주 일어난다는 점에서 한계가 보였다. 조회는 빠른 편이지만, 삽입과 삭제와 같이 DB에 변경이 자주 일어나게 되면 연산량이 많아진다는 단점이 있었다. 그래서 이를 보완하고자 나온 것이 B+트리이다. 특징 B 트리와 다른 점. 모든 데이터가 리프노드에 모여있다. 모든 리프노드는 연결리스트 형태를 띄고 있다. 리프노드의 부모 key는 리프노드의 첫번째 key보다 작거나 같다. B트리와 같은 점. 노드에는 최대 $M-1$개 부터 $\lceil \frac{M}{2} \rceil - 1$개의 데이터가 포함된다. 특정 노드의 데이터(key)가 $K$개라면, 자식 노드의 개수는 $K+1$개여야 한다. 특정 노드의 왼쪽 서브 트리는 특정 노드의 데이터보다 작은 값, 오른쪽 서브 ..

Unity2D: Start와 Update
Develop/Unity2024. 3. 1. 13:43Unity2D: Start와 Update

시작 저번 글에 이어 자동차를 조종하는 것을 마저 만들어볼 것이다. 이전 글 내용이 기억나지 않는다면 아래의 링크로 들어가면 볼 수 있다.▼ [Unity2D] Object와 Sprite 시작 간단하게 캡슐 모양의 오브젝트를 자동차처럼 조종하는 것을 만들어볼 것이다. (유니티 에디터 버전: 2020.3.30f1 Intel) 아래의 자동차를 조종해 볼 것이다.▼ 아래의 이미지는 코딩고라니가 noguen.com C# 스크립트 생성 키보드로 자동차를 조종하기 전에 우선은 입력없이 자동차 스스로 움직이게 해보자. 그러기 위해서는 자동차 오브젝트의 위치나 각도를 바꿔줄 코드가 필요한데, 그 코드를 Unity에서는 스크립트(Script)라고 부른다. 기본적으로 스크립트는 C# 문법을 따른다. 우선은 C# 스크립트를 ..

백준 1744번 수 묶기 - SWIFT
Algorithm/PS2024. 3. 1. 13:27백준 1744번 수 묶기 - SWIFT

문제 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열의 합을 구하면 0+1+2+4+3+5 = 15이다. 하지만, 2와 3을 묶고, 4와 5를 묶게 되면, 0+1+(23)+(45) = 27이 되어 최대가 된다. 수열의 모든 수는 단 한번만 묶거나, 아니면 묶지 않아야한다. 수열이 주어졌을 때, 수열의 ..

백준 1725번 히스토그램 - SWIFT
Algorithm/PS2024. 2. 29. 21:07백준 1725번 히스토그램 - SWIFT

문제 히스토그램에 대해서 알고 있는가? 히스토그램은 아래와 같은 막대그래프를 말한다. 각 칸의 간격은 일정하고, 높이는 어떤 정수로 주어진다. 위 그림의 경우 높이가 각각 2 1 4 5 1 3 3이다. 이러한 히스토그램의 내부에 가장 넓이가 큰 직사각형을 그리려고 한다. 아래 그림의 빗금 친 부분이 그 예이다. 이 직사각형의 밑변은 항상 히스토그램의 아랫변에 평행하게 그려져야 한다. 주어진 히스토그램에 대해, 가장 큰 직사각형의 넓이를 구하는 프로그램을 작성하시오. 입력 첫 행에는 N (1 ≤ N ≤ 100,000) 이 주어진다. N은 히스토그램의 가로 칸의 수이다. 다음 N 행에 걸쳐 각 칸의 높이가 왼쪽에서부터 차례대로 주어진다. 각 칸의 높이는 1,000,000,000보다 작거나 같은 자연수 또는 ..

[Flutter][Widget] Step Indicator 구현
Develop/Flutter2024. 2. 29. 17:03[Flutter][Widget] Step Indicator 구현

개요 : Step Slider가 있는데 왜 구현한거지? 만들게 된 계기 프로그램에서 예약 페이지를 개발할 때, 디자이너의 의도가 아래와 같았다. ▼ 인디케이터가 5분 단위로 이동해야하며, 아래 선택된 시간만큼 인디케이터 뒷부분의 공간을 색칠해줘야한다. 여기서 가장 중요한 것은 5분 단위로 끊어서 이동해야한다는 것이다. 예약은 5분 단위로 진행되기 때문에 끊어서 이동하지 않으면 매 분, 매 초단위로 예약할 수 있다고 유저가 혼동할 수 있기 때문이다. 그렇기에 5분이라는 Step을 두어 구현을 해야하는 상황이 발생한 것이다. 근데 왜 slider를 수정하지 않은것? Flutter에서 기본적으로 Slider 위젯을 제공해준다. ▼ Slider class - material library - Dart API A..

백준 1717번 집합의 표현 - SWIFT
Algorithm/PS2024. 2. 29. 15:29백준 1717번 집합의 표현 - SWIFT

문제 초기에 {0}, {1}, {2}, ... {n} 이 각각 n+1개의 집합을 이루고 있다. 여기에 합집합 연산과, 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산을 수행하려고 한다. 집합을 표현하는 프로그램을 작성하시오. 입력 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 a가 포함되어 있는 집합과, b가 포함되어 있는 집합을 합친다는 의미이다. 두 원소가 같은 집합에 포함되어 있는지를 확인하는 연산은 1 a b의 형태로 입력이 주어진다. 이는 a와 b가 같은 집합에 포함되어 있는지를 확인하는 연산이다. a와..

백준 1654번 랜선 자르기 - SWIFT
Algorithm/PS2024. 2. 28. 23:04백준 1654번 랜선 자르기 - SWIFT

문제 집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다. 이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자르거나 만들 때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수길이만큼 자른다..

[Flutter][Error] Unhandled Exception: MissingPluginException
Develop/Flutter2024. 2. 28. 22:55[Flutter][Error] Unhandled Exception: MissingPluginException

발단이것저것 테스트 해보며 필요한 부분을 만들던 도중, 기기에서 사진을 불러오는 기능이 필요했다.ImagePicker를 사용하면 쉽게 해결이 되는데(쉽다고는 했지만 iOS에서 권한 설정이 필요해서 시간이 좀 걸리긴 했다...) 패키지를 추가하고 나니 `MissingPulginException`이라는 에러 메세지가 나왔다.  해결해결은 굉장히 쉬웠다.앱 디버깅을 종료하고 다시 빌드를 하면 해결이 된다. 처음 이 에러를 마주했을 때는 뭐가 문제인지 몰라서 import를 잘못한건지, 아니면 패키지에서 사용하는 클래스와 같은 이름을 사용하는 클래스가 있는건지 계속 찾아 헤맸다.스택오버플로우와 다른 글들을 찾아보고나서 너무나도 쉽게 해결이 되어 조금은 허무했지만, 마주했을 당시에는 상당히 당황스럽긴 했다. 만약에..

[노션강의] 3. 블록 소개
NOTION2024. 2. 27. 13:46[노션강의] 3. 블록 소개

⛳️ 블록의 종류와 사용법에 대해 알아봅시다! 노션에는 엄청나게 많은 종류의 블록이 존재한다. 보기 좋은 글을 만들어주는 글 변형 블록들부터, 이모지, 사진, 그리고 심지어는 페이지까지 블록으로 넣을 수 있다. 블록들 대부분은 다루기 쉽기에 하나씩 직접 만들어서 사용해보면 그 사용법에 대해 금방 익힐 수 있다. 그래서 제가 모든 블록들을 설명하기 보다는 블록들을 카테고리 위주로 설명한 후, 각 카테고리에서 사용하기 어려운 블록들에 대해서 추가적으로 설명하도록 하겠다. 마크다운 지원 블록 블록들의 카테고리는 노션 팀이 보기좋게 분류를 해놓았다. 기본블록 미디어 데이터베이스 AI 블록 고급 블록 인라인 임베드 그런데 각 카테고리에 5개 정도의 블록이 있다고만 생각해도 35개의 블록이다. 블록의 개수를 생각해..

image