Process
CS/운영체제2024. 3. 4. 20:49Process

프로세스(Process)란? 프로세스란 지금 실행하는 프로그램을 의미하며, 프로그램의 가장 기본적인 단위를 의미하기도 한다. 프로세스의 문맥(Context) 현재 혹은 특정 지점을 놓고 봤을 때 프로세스가 어디까지 수행됐는지, 프로세스를 실행시키기 위해 어떤 메모리 공간을 만들었는지, Program Counter가 어디를 가리키고 있는지를 알려주는 정보를 프로세스의 문맥이라고 한다. 프로세스의 요소 각 프로세스는 크게 아래의 2가지를 갖는다. address space(core image) process table entry 여기서 entry는 해당 프로세스를 수행하기 위해 필요한 정보와 나중에 수행하기 위해 필요한 레지스터 값과 상태를 저장한다. Entry보다는 Process Control Block이라..

백준 1747번 소수&팰린드롬 - SWIFT
Algorithm/PS2024. 3. 3. 21:50백준 1747번 소수&팰린드롬 - SWIFT

문제 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 출력 첫째 줄에 조건을 만족하는 수를 출력한다. 문제 링크 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, www.acmicpc.net 풀이 이 문제를 풀 때..

[Unity2D] Input 시스템
Develop/Unity2024. 3. 3. 21:37[Unity2D] Input 시스템

시작 게임은 영상이나 음악이란 요소도 중요하지만, 영화나 다른 시각 매체와 큰 차이점을 두는 것은 바로 조작이다. 우리가 게임을 조작하기 위해서는 여러가지 것들을 이용할 수 있다. PC게임이라면 키보드, 콘솔 게임이라면 게임패드, 모바일 게임이라면 터치UI 등등이 될 수 있다. 우리가 게임을 조작하는 것은 물리적인 조작 장치가 게임에 신호를 보내는 것이라고 할 수 있다. 이 조작을 위한 신호는 Input 시스템이 담당하고 있기에 우리는 Input 시스템을 어떻게 이용할 수 있는지에 대해 알아야한다. Input System 게임 엔진에 대해 전문적이고 체계적으로 개발한 Unity는 그동안 입력에 관해 여러가지 시스템들을 도입하고 발전 시켰다. 그 결과 두 형태의 Input 시스템이 존재하는데, 각각 old..

파일 구성과 인덱싱
CS/데이터베이스2024. 3. 1. 16:27파일 구성과 인덱싱

개요 필자는 데이터베이스에 대해 자세하게 배우기 전까지는 우리가 넣은 데이터들이 들어가는 공간에 대해 생각한 적이 없었다. 어딘가로 들어가는 건 알겠는데 그 어딘가에 대한 개념이 상당히 모호하고, 마치 블러처리된 느낌이었다. 하지만 데이터베이스를 사용하고 이를 통해 개발을 한다면 정확히 알아야할 필요가 있다. 그렇다면 저장장치와 데이터베이스가 관련이 있는건 알겠는데, 정확히 어떤 이유 때문에 저장장치에 대해 알아야할까? 데이터베이스에서는 데이터를 저장할 때 다양한 저장장치를 사용할 수 있다. 대표적으로는 하드디스크(HDD), 솔리드 스테이트 디스크(SSD), 메모리(RAM)과 같은 것들이 있다. 데이터베이스 관리자는 이러한 저장장치들의 특성을 이해하고, 이를 데이터베이스 설계와 운영에 활용함으로써 데이터..

디스크와 파일
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..

image