분류 전체보기 188

CPU의 구조와 원리

중앙처리장치(CPU)란? 중앙처리장치(CPU)는 명령어의 해석과 자료의 연산, 비교등의 처리를 제어하는 컴퓨터 시스템의 핵심장치이다. 다양한 입력 장치로부터 정보를 입력받아 처리한 후, 그 결과를 출력장치로 보내는 일련의 과정을 제어하고 조정하는 일을 수행한다. CPU는 사람의 두뇌와 같이 컴퓨터의 모든 시스템을 제어, 처리하는 가장 핵심적인 장치라고 할 수 있다. CPU의 구성요소 CPU는 크게 제어 장치, 연산 장치(ALU), 레지스터 와 각 구성 요소를 연결하는 내부 버스로 구성되어 있다. 1. 제어 장치 (CU, Control Unit) 컴퓨터 시스템의 작동을 통제하고 지시하는 장치 기억 장치로부터 프로그랭 명령을 순차적으로 꺼내 해독하고, 해석에 따라서 명령어 실행에 필요한 제어 신호를 기억장치..

CS/컴퓨터 구조 2021.11.05

프로세스와 스레드 (Process vs Thread)

오늘은 운영체제 중에서도 가장 중요하다고 꼽히는 프로세스와 스레드 및 차이점에 대해 알아보자. 먼저, 프로세스와 스레드를 알아보기 전에 프로그램 이라는 개념에 대해 알아야 한다. 프로그램 프로그램이란, 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가지 않은 정적인 상태를 말한다. 즉, 메모리에 올라가지 않은 상태이기 때문에 아직 운영체제로부터 독립적인 메모리 공간을 할당받지 않은 상태이며 정적인 상태이기 때문에 아직 실행되지 않고 가만히 있는 상태이다. 즉, 그냥 코드 덩어리 라고 할 수 있다. 그럼 이를 인지한 후, 본격적으로 프로세스와 스레드에 대해 알아보자. 프로세스 프로세스란, 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램이다. 컴퓨터에서 실행되고 있다는 것은 운영체제로부터 독립적인 메..

CS/운영체제 2021.11.01

[백준] 20057 마법사 상어와 토네이도 (Python 파이썬)

https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 문제 설명 문제의 자세한 설명은 위 링크를 참조하시길 바랍니다. 이 문제는 구현 시뮬레이션 문제로, 문제에서 요구하는 사항이 꽤 많고 상세합니다. 빠짐없이 체크하여 어떻게 구현해야 할지 구상한 후에 구현해야 하는 문제입니다. 풀이 과정 from collections import deque n = int(input()) graph = [] graphIdx = dequ..

[백준] 20056 마법사 상어와 파이어볼 (Python 파이썬)

https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 문제 설명 문제의 자세한 설명은 위 링크를 참조하시길 바랍니다. 이 문제는 구현 시뮬레이션 문제로, 문제에서 요구하는 사항이 꽤 많고 상세합니다. 빠짐없이 체크하여 어떻게 구현해야 할지 구상한 후에 구현해야 하는 문제입니다. 풀이 과정 ① 먼저 초기의 파이어볼을 입력받은 후에 fireball라는 큐와 graph의 각 칸에 파이어볼을 삽입합니다. firebal..

[백준] 21609 상어 중학교 (Python 파이썬)

문제 설명 https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 문제의 설명이 굉장히 긴 편이라 위 링크의 문제를 꼼꼼히 읽어보시고 풀이과정을 살펴보시길 추천드립니다. 일반적인 BFS/ DFS 문제보다 신경써서 구현해야 할 부분들이 훨씬 까다로운 문제이므로 과정을 하나하나 잘 살펴보면서 구현하시는 것을 추천드립니다. 풀이 과정 먼저 두 방법으로 풀면서 코드를 두 가지로 작성해보았습니다. 코드①은 구현해야 할 부분들을 그대로 나열식으로 작성한 코드..

Algorithm/DFS & BFS 2021.10.22

[백준] 21611 마법사 상어와 블리자드 (Python 파이썬)

https://www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net 문제 설명 문제의 설명이 굉장히 긴 편이라 위 링크의 문제를 꼼꼼히 읽어보시고 풀이과정을 살펴보시길 추천드립니다. 이 문제는, 특별한 알고리즘 없이 문제에서 주어진 사항을 구현하는 문제이지만 구현해야 하는 부분들이 굉장히 까다로운 문제였습니다 풀이 과정 풀이과정이 굉장히 길기 때문에, 잘 모르시는 부분을 중점으로 보시는 것을 추천드립니다. ① 먼저, 가운데 칸(n//2, n//2..

[백준] 21610 마법사 상어와 비바라기

문제 설명 https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 문제에서 주어진 조건사항들을 그대로 구현하는 문제이다. 큰 제약사항이나 알고리즘이 따로 사용되지는 않으므로 순서에 맞게 그대로 구현만 잘 해주면 된다. 풀이 과정 문제에서 특별히 신경써주어야 하는 부분은, 조건5 부분이다. 먼저, 구름이 di 방향으로 si칸 이동한 후에 비를 뿌리고 구름은 사라진다. 이 때, 구름이 사라진 칸은 물복사 버그 후에 구름이 생길 수 없기 때문에 1로..

[백준] 14891 톱니바퀴 (Python 파이썬)

https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제 설명 문제에서 주어진 4개의 톱니바퀴를 규칙에 맞게 회전시키는 문제이다. 별다른 알고리즘 없이 문제에서 주어진 사항을 순서대로 구현만 하면 되는 문제이다. 풀이 과정 이 문제는 별다른 알고리즘 없이 문제에서 주어진 사항을 그대로 구현만 하면 되는 문제이다. 12시 방향을 0인덱스로 시작하여 11시 방향을 7 인덱스로 번호를 붙이기 때문에 현재 톱니바퀴의 왼쪽을 검사할 때는 [i][6] =..

[백준] 14503 로봇 청소기 (Python 파이썬)

https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 설명 문제에서 주어진 것 처럼, 로봇 청소기가 빈공간을 돌아다니며 청소를 한다. 현재 방향을 기준으로 왼쪽 방향부터 탐색을 시작하며, 방향은 0 = 북 / 1 = 동 / 2 = 남 / 3 = 서쪽을 의미한다. 문제에서 주어진 조건과 상황들을 잘 고려하여 코드를 작성해보자. 풀이 과정 먼저 로봇 청소기의 초기 위치는 무조건 0이며 해당 칸을 청소하게 된다. 청소를 한 칸은 2로 변경하여 청소..

[백준] 14502 연구소 (Python 파이썬)

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 설명 N x M 크기로 구성된 연구소에 바이러스가 퍼졌다. 연구소의 각 칸은 0, 1, 2로 구성되어 있으며 0은 빈 칸, 1은 벽, 2은 바이러스 이다. 바이러스는 벽을 뚫고 확장할 수 없으며 상하좌우에 인접한 빈 칸으로만 확장이 가능하다. 위 그림과 같이 N x M 모양의 연구소(행렬)가 주어지며, 3개의 벽(1)을 세워야 한다. 3개의 벽을 세웠을 때, 안전영역의 크기(0의 개수)의 최댓값을 구하면..

Algorithm/DFS & BFS 2021.10.17