분류 전체보기
-
[BOJ]백준 16931번: 겉넓이 구하기Problem Solving/BOJ(백준) 2021. 2. 5. 00:47
www.acmicpc.net/problem/16931 16931번: 겉넓이 구하기 크기가 N×M인 종이가 있고, 종이는 1×1크기의 칸으로 나누어져 있다. 이 종이의 각 칸 위에 1×1×1 크기의 정육면체를 놓아 3차원 도형을 만들었다. 종이의 각 칸에 놓인 정육면체의 개수가 주어 www.acmicpc.net 백준의 겉넓이 구하기 문제 기하적인 문제이다 각 칸의 넓이를 1이라 했을 때, 도형의 겉넓이를 구하는 문제이다 이 때, 그림의 흰색 칸은 위에서 투시했을 때의 위쪽 면의 겉넓이이다. 밑에서 봤을 때에도 동일하므로 초기의 겉넓이 값은 N*M*2이다 그리고 옅은 주황색 면을 보면, 요철이 많지만 앞에서 투시해서 봤을 때 반대편에서 봤을 때랑 겉넓이가 같음을 알 수 있다. 따라서 옅은 주황색 면의 겉넓이..
-
[C] Doubly Circular Linked List기반의 ADT List 연산 구현Programming/C++ 2021. 2. 5. 00:42
c++의 구조체를 이용해서 직접 Doubly Circular Linked List를 구현해봤다 구현한 총 연산은 create, traversal, insert(first, middle, last), delete(first, middle, last) typedef struct Node { int data; struct Node* next; struct Node* prev; }Node; void create(Node* head) { head = NULL; } void traversal(Node* head) { Node* cur = head; if (head == NULL)return; do { printf("%d ", cur->data); cur = cur->next; } while (cur!= head);..
-
Array와 Linked List의 차이점Data Structure 2021. 1. 31. 16:09
List(순서가 있는 데이터 set)을 구현하기 위한 방법으로는 Array와 Linked List가 있다. 두 자료구조에는 결정적인 차이가 있는데, Size의 고정 여부와 메모리가 연속적으로 할당되어 있는지의 여부가 다르다. Array는 선언 시 Size가 고정되어 있으며, 연속적인 메모리 공간에 배열이 할당되게 된다. 따라서 Array의 각 element를 접근하기 위해서는 0번째 index의 주소값만 알면 되므로 Linked List에 비해 월등히 빠른 접근 시간을 가진다. Linked List는 insert, delete연산을 수행할 때 마다 size가 변화하며, 각각의 element들은 독립적인 메모리 공간에 할당되기 때문에 element 자체에서 다음(+이전) element의 주소값을 가지고 있..
-
% 연산을 이용한 Circular Array 구현 및 응용Data Structure 2021. 1. 30. 22:36
PS를 하면 종종 Circular Array의 필요성을 느낄 때가 있다아래의 문제들은 내가 circular 배열을 이용해서 푼 문제들의 목록이다더보기문제www.acmicpc.net/problem/2005520055번: 컨베이어 벨트 위의 로봇길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부www.acmicpc.netwww.acmicpc.net/problem/1489114891번: 톱니바퀴총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데..
-
[BOJ]백준 17413번: 단어 뒤집기 2Problem Solving/BOJ(백준) 2021. 1. 30. 19:18
www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 단어 뒤집기 문제이다 사실 파이썬으로 split이랑 reverse써서 풀려고 했는데 내맘대로 안돼서 걍 C++ 스택으로 풀었다 '': 괄호가 닫히면 state변수를 0으로 바꿔준다 + 그대로 출력 이외의 문자 - state가 1일 때: 괄호 안의 문자라는 뜻. 그대로 출력 - state가 0일 때: 괄호 밖의 문자라는 뜻. 스택에 push (여는 괄호가 나왔거나, 스페이스가 나왔..
-
[OS] 운영체제(Operating System)의 개요 및 역할Computer Science/Operating System 2021. 1. 25. 22:48
현존하는 모든 컴퓨터, MPU에는 운영체제가 존재한다. 보편적으로 우리는 Mac OS, Window, Linux 등의 다양한 상용 운영체제를 알고 있고, 가지고 있다. 컴퓨터 과학에서 운영체제에 대해서 정의하면, 운영 체제(Operating System): 컴퓨터의 하드웨어를 관리하고 응용 소프트웨어를 실행하기 위해 존재하는 시스템 소프트웨어. 좁은 의미에서는 보안, 추상화, 자원 관리의 역할을 맡고 있는 시스템 소프트웨어인 커널만을 가리키는 단어이지만, 넓은 의미에서는 커널을 포함한 주변 시스템 유틸리티를 전부 포함한다. 위와 같이 컴퓨터 하드웨어와 응용 SW 사이에 위치해서 자원의 형평성 있는 분배를 통한 효율적 관리, 사용자에게 시스템을 편리하게 이용 가능한 환경을 제공하는 역할을 한다. 이러한 운..
-
[OS] Interrupt 인터럽트란 ?Computer Science/Operating System 2021. 1. 22. 00:50
인터럽트는 펌웨어 개발의 필수 기능이자 OS 개념이다 Interrupt: 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 마이크로프로세서에게 알려 처리할 수 있도록 하는 것 - 출처: 위키백과 인터럽트는 위와 같은 정의를 가지고 있는데, 주로 "프로그램을 실행하던 중에 예기치 못한 상황이 발생했을 때, 현재 처리하던 작업을 중단하고 해당 상황을 먼저 처리한 뒤에 기존의 작업을 진행하는 것" 이라고 하기도 한다. 이러한 설명은 인터럽트의 발생을 굉장히 예외적이고, 급작스러운 것으로 묘사하는 것 같지만 실제로는 인터럽트는 매우 빈번하고 흔하게 일어난다. OS는 CPU라는 한정된 자원을 가지고 있고, 이것을 적절하게 프로세스들..
-
[BOJ]백준 1442번: 벽 부수고 이동하기 2/BFSProblem Solving/BOJ(백준) 2021. 1. 20. 21:30
www.acmicpc.net/problem/14442 14442번: 벽 부수고 이동하기 2 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 1,000), K(1 ≤ K ≤ 10)이 주어진다. 다음 N개의 줄에 M개의 숫자로 맵이 주어진다. (1, 1)과 (N, M)은 항상 0이라고 가정하자. www.acmicpc.net 벽 부수고 이동하기 시리즈 이전에는 벽을 한 개만 부술 수 있었는데, 이번에는 벽을 최대 k개 부술 수 있다. 말이 되고픈 원숭이 문제(2jinishappy.tistory.com/144)와 같이, visit배열을 3차원으로 관리서 벽을 k개 부쉈을 때의 방문 여부를 체크해 주어야 한다. 구조체 변수 순서 헷갈리고 배열 선언 제대로 안 해서 헤맸다....^^ #include #..