목록콤퓨타 왕왕기초 (156)
파게로그
문제 링크: 프로그래머스 Lv.2 주식가격 https://programmers.co.kr/learn/courses/30/lessons/42584 인덱스 curIdx를 통해 주식 가격 리스트를 읽어나가면서, 스택에 현재 가격과 인덱스를 묶어서 push한다. 그러다가 현재 가격이 스택 맨 위의 가격보다 같거나 낮으면, 이는 주식 가격이 떨어졌다는 것을 의미하므로, 스택의 원소들을 pop한다. 현재 시점(curIdx)과 기록된 시점(topIdx)의 차이가 곧 '가격이 떨어지지 않은 기간'이며, pop한 원소의 인덱스야말로 우리가 구하는 answer의 인덱스이기에, answer[Idx] = curIdx - topIdx를 실행한다. 그러다가 스택 맨 위의 가격이 현재 가격보다 같거나 낮으면, 현재 가격은 더 이상..
문제 링크: 9997번 폰트 https://www.acmicpc.net/problem/9997 알고리즘 선택 과정에서의 고민 완전탐색을 해야할 것이라고 생각하지 못하고 효율적인 방법을 고민하느라 많은 시간을 소요했다. 고민하다가 답이 나오지 않을 때는 케이스의 개수나 단어의 길이를 보고 완전탐색도 적극적으로 고민해보아야겠다. 구현 과정에서의 고민 원래는 비트마스크를 쓰는 문제인 것 같다... 제시되어 있는 기준에 대해서는 메모리 초과를 했지만 자바라서 채점 기준이 완화되어 있는 것 같다. 단어를 입력받으면, 예를 들어 'ac'라는 단어는 [true, false, true, false, false, false, ...]와 같은 배열로 저장된다. 2차원 boolean 배열 words는 cases개의 단어에 ..
문제 링크: 2800번 제목 https://www.acmicpc.net/problem/2800 처음의 고민 사전 순 출력이 무엇인가에 대해서 헤맸었는데, 그냥 말 그대로 sort()를 이용하면 되는 것이었다. 즉 처음부터 사전 순으로 만들기 위해서 노력할 필요가 없이, 그냥 각 괄호를 출력하거나 출력하지 않는 경우(단 모든 괄호를 출력하는 경우는 제외)를 모두 하나의 배열에 문자열로 저장하여 이를 정렬하여 출력하면 된다. 구현 과정의 고민 아마 본래는 비트마스크를 쓰는 문제가 아닐까 하는데... 빨리 배워야겠다. 처음에 문자열을 읽어나가는 과정에서부터 왼쪽 괄호와 오른쪽 괄호의 인덱스를 저장한다. 쌍을 맞추기 위해서, 왼쪽 괄호의 인덱스를 스택에 쌓아나가다가, 인덱스 i에서 오른쪽 괄호를 만나면 lpar..
문제 링크: 1662번 압축 https://www.acmicpc.net/problem/1662 s[i]는 s[i+1]이 '('가 아닌 다른 문자이면 일반 문자열이므로 length에 1을 더해준다. s[i+1]이 '('이면 괄호 안에 오는 문자열이 반복되는 횟수를 나타내므로, 이는 괄호 안의 문자열의 길이와 곱해져야 한다. 괄호 안의 문자열에 대해서 unzip()을 호출해주고, 다음으로 처리해야 할 문자의 인덱스, 즉 i를 괄호 다음으로 넘겨서 계속 읽어나간다. 이렇게 하면 여러 개의 괄호가 있는 경우, 그리고 괄호 뒤에 또 다른 문자열이 나오는 경우도 처리할 수 있다. 오히려 문제는 '괄호 안의 문자열'이 어디부터 어디까지를 말하는 것인가에 있었다. 스택이 빌 때까지 오른쪽 괄호를 찾아 나서면, 스택이 ..
Chapter Two: Operating-System Structures 이번 챕터의 목표는? 운영체제가 사용자, 프로세스, 다른 시스템에 제공하는 서비스를 기술한다. 운영체제를 구축하는 다양한 방법들을 알아본다. 운영체제가 설치되고 커스터마이즈되는 방법과 부팅되는 방법을 설명한다. 2.1 Operating-System Services 운영체제의 서비스 1. 사용자를 위한 서비스 User interface(UI) - command-line interface(CLI) - batch interface(파일을 입력으로 하며, 그 파일이 실행됨) - graphical user interface(GUI) Program execution I/O operations File-system manipulation Com..
1.10 Kernel Data Structures lists, stacks, queues trees hash functions and maps bitmaps 1.11 Computing Environments traditional computing mobile computing 1.11.3 distributed systems 1.11.4 client-server computing 1.11.5 peer-to-peer computing 1.11.6 virtualization 1.11.7 cloud computing 1.11.8 real-time embedded systems 1.12 Open-Source Operating Systems 1.13 Summary
컴퓨터 시스템이 여러 명의 사용자가 접속하는 것, 그리고 여러 개의 프로세스가 동시에 실행하는 것을 허가하는 한, 데이터에 대한 접근은 규제가 필요하다. 즉 파일, 메모리 세그먼트, CPU 등 자원은 OS로부터 허가받은 프로세스만이 동작할 수 있어야 한다는 것이다. 예를 들어, memory-addressing hardware는 프로세스가 자신의 주소 공간에서만 실행되는 것을 보증한다. 타이머는 어떤 프로세스도 결과적으로 제어권을 내놓는 일 없이 CPU를 점유할 수는 없도록 보증한다. Device-control register는 사용자에게 접근할 수 없지만, 그래서 다양한 주변부 기기들의 무결성은 보호된다. Protection은 "any mechanism for controlling the access o..
문제 링크: 9663번 N-Queen https://www.acmicpc.net/problem/9663 방법에 대한 고민을 3일, 시간 초과에 대한 고민을 2일 동안 했다. 결국 주변 사람들에게 도움을 구했지만... 가장 처음으로 생각해야 할 것은, 2차원 배열 board를 선언할 필요는 없다는 것이다. 어차피 한 행에 퀸은 하나밖에 들어가지 못하니까, 1차원 배열에서 row를 인덱스로 하여 col을 저장하면 된다. 그 다음으로는, check()에 대한 고민부터 할 수 있다. check()는 (row, col)에 퀸을 놓고자 할 때, 해당 칸이 퀸을 놓을 수 있는 칸인지를 return하는 함수이다. 여기서 두 가지 사항에 대해 확인해야 한다. 1. 같은 열(col)에 퀸이 있는지를 확인해야 한다. 이를 ..