문제 https://www.acmicpc.net/problem/27970 27970번: OX O와 X로 이루어진 문자열이 주어진다. 모든 문자를 X로 만들 때까지 다음 연산을 반복할 때, 시행하는 연산의 횟수를 구하시오. 문자열의 가장 왼쪽에 있는 O를 X로 바꾸고, 그보다 왼쪽에 있는 X www.acmicpc.net 풀이 a = 10**9 + 7 s = input() arr = [1]*len(s) for i in range(1, len(s)): arr[i] = (arr[i-1]*2)%a count = 0 for i in range(len(s)): if s[i] == 'O': count = (count + arr[i])%a print(count) 처음에는 for문을 통해 일일이 count하도록 코드를 짰..
문제 https://www.acmicpc.net/problem/28014 28014번: 첨탑 밀어서 부수기 첫째 줄에 첨탑의 개수 $N$이 주어진다. $(1\leq N\leq 5\,000\,000)$ 둘째 줄에는 앞에서부터 차례대로 첨탑의 높이 $H_1, H_2, \cdots, H_n (1\leq H_i\leq 1\,000\,000)$ 이 주어진다. 입력으로 주어지는 모든 수는 정 www.acmicpc.net 풀이 #include using namespace std; int count = 0; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n; int n1 = 0; int n2; cin >> n; for(int i = 0; i> n2; if(n..
문제 https://www.acmicpc.net/problem/26258 26258번: 다중 일차 함수 2차원 좌표 평면에 점 $N$개가 주어진다. $i$번째 점의 위치는 $(x_i, y_i)$이고, $1 \leq i \lt N$인 모든 $i$에 대하여 $x_i \lt x_{i+1}$을 만족하며, 점 $i$와 점 $i + 1$을 잇는 일차 함수가 그려진다. 각각 구간 www.acmicpc.net 풀이 #include using namespace std; int cor[100005][2]; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int N, Q; float x, y, k; cin >> N; for(int i = 0; i> x >> y; cor[i..
문제 https://www.acmicpc.net/problem/21735 21735번: 눈덩이 굴리기 눈송이들이 많은 동네인 숙명여대 앞마당에서 눈사람 만들기 대회를 연다. 앞마당의 길이는 $N$이고 위치 $1$부터 위치 $N$ 까지만 눈이 쌓여있다. 위치 $i$에 눈이 $a_i$만큼 쌓여있다. 대회 규칙은 www.acmicpc.net 풀이 #include using namespace std; int snow[105]; int N, M; int bf(int pos, int count, int size){ if(pos >= N) return size; if(count == M) return size; int result = 0; result = max(bf(pos+1, count+1, size+snow[p..
문제 https://www.acmicpc.net/problem/27963 27963번: 합금 주화 첫 번째 줄에 0보다 크고 100보다 작은 세 정수 $d_1$, $d_2$, $\chi$가 공백으로 구분되어 주어진다. 서로 다른 두 정수 $d_1$, $d_2$는 기념주화를 이루는 두 가지 금속의 밀도이다. 단위는 $\text{g}/\text{cm} www.acmicpc.net 풀이 #include using namespace std; int main(){ int a, b, m; double result; cin >> a >> b >> m; if(a
스레드의 장점 1. 응답성- 프로세스의 일부가 막혀도 실행될 수 있으며, 이는 유저 인터페이스에서 중요하다.- 예를 들어, 사용자 인터페이스 스레드와 백그라운드 작업 스레드를 분리하여 사용자가 프로그램의 응답성을 유지사면서 긴 작업을 처리할 수 있다. 2. 자원 공유- 스레드는 프로세스의 자원을 공유하므로 메모리 공유나 message passing이 더 쉽다.- 스레드는 프로세스의 주소 공간을 공유하므로 변수 등의 데이터를 효율적으로 공유하여 작업을 처리할 수 있다. 3. 경제성- 스레드는 프로세스 내에서 생성되는 것이므로 프로세스를 만드는 것보보다 메모리 및 자원 사용 측면에서 경제적이다.- context switching 보다 thread switching이 overhead가 더 적다. 4. 규모..
Cache 컴퓨터 시스템에서 빠른 데이터 엑세스를 위해 사용되는 고속 메모리로 CPU와 메인메모리 사이에 위치한다. 컴퓨터가 실행하는 프로그램은 메인 메모리에 저장되어 있지만 CPU가 메인 메모리에서 데이터를 가져오기까지는 상당한 시간이 걸리기 때문에, 프로그램의 실행속도를 향상시키기 위해 캐시가 도입된 것이다. 만약 우리가 책장에서 책을 가져와 책상 위에서 사용한다고 가정해보자. 하지만 책장에서 매번 책을 가져오기에는 번거롭고 시간도 비교적 오래 걸린다. 그래서 앞으로는 책상 위에 작은 책상용 책꽂이를 마련해 자주 사용하는 책 몇 권을 꽂아두기로 했다. 이렇게 책상용 책꽂이를 사용하게 되면서 우리는 책을 조금 더 빠르고 쉽게 가져올 수 있게 되었다. 여기서 책장은 메인 메모리, 책은 데이터, 책장은 C..
Mount마운트는 디스크와 같은 특정 물리적 장치를 디렉토리에 연결해주는 작업을 의미한다. 프로세스에서 파일 시스템을 사용하기 위해서는 반드시 파일 시스템이 마운트되어 있어야 하며, 마운트를 수행할 때는 저장장치의 이름과 마운트 포인트를 결정해야 한다. Root partition운영체제가 설치되는 루트 파티션(Root Partition)은 시스템이 부팅될 때 자동으로 마운트된다. 파일을 구분하는 방식으로는 단일 파일 시스템 내에서 사용되는 inode와 여러 파일 시스템에 걸쳐 사용되는 vnode가 있다. Virtual File System (VFS)여러 파티션에 서로 다른 file system이 올려져있다면, 파일에 대한 system call을 호출할 때마다 file system에 맞는 함수를 호..
File System Structure I/O는 block 단위로 전달되고 block은 하나 이상의 sector(512 or 4096 bytes)로 이루어져 있다. 일반적으로 block size는 4096 bytes이고 이건 일반적으로 사용하는 page size와도 일치한다. File system - File system은 데이터를 disk에 어떻게 저장할지를 결정함 - 사용자가 storage에 접근할 수 있는 interface를 제공, logical structure을 physical device에 어떻게 저장할지 결정 - 사용자가 데이터에 효율적이고 편하게 접근할 수 있게 함 위 그림은 파일 접근 과정을 나타내는 계층적 구조를 표현한 것이다. Logical file system 컴퓨터 시스템에서 파일..
File저장장치에 저장되는 논리적 저장 단위- 유저나 애플리케이션이 데이터를 저장하고 불러들이는 방법- 비 휘발성- 프로그램(source, object) 또는 데이터(numeric, character, binary) 파일의 속성들에는 다음과 같은 것들이 있다.파일들에 대한 정보는 directory structure에 있고, directory structure은 disk 내에 존재한다. File operationsfile operation은 여러가지 있지만 그중에서'Write'은 write pointer가 위치한 부분을 write하고'Read'는 read pointer가 위치한 부분을 read한다.'Reposition'은 seek이라 부르며, 파일 내의 위치를 바꾼다. 이를 통해 write, read ..