Uknow's Lab.
article thumbnail
[백준 14502번] [Kotlin] 연구소
코딩테스트/Kotlin 2024. 2. 29. 17:46

https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 난이도 : 골드 4 태그 : 구현, 그래프 이론, 브루트포스 알고리즘, 그래프 탐색, 너비 우선 탐색 설명 연구소에 바이러스가 퍼졌습니다. 바이러스가 퍼지기 전에 다행이도 벽을 3개 세울 수 있을 때, 벽을 적절히 배치하여 안전구역(바이러스가 퍼지지 않는 구역)을 최대화하는 문제입니다. 주어지는 바이러스는 1개 이상이기 때문에, 초기 큐에 바이러스의 위치를 모두 넣어놓고 BFS를 돌려 여러 위치에서 바이러스를..

article thumbnail
[혼공스터디 11기] 컴퓨터구조+운영체제 회고

혼공스터디 11기 어느덧 혼공스터디 11기가 끝났습니다. 전공자이긴 하지만, 사람의 뇌는 휘발성인 탓에... 탄탄한 CS 지식 및 역량을 갖추기 위해 컴퓨터 구조와 운영체제 공부를 다시 하려고 하던 중, 인스타를 보다가 혼공스터디를 모집한다기에 신청했던게 엊그제 같은데, 벌써 끝났네요. 언젠가 해야지~ 하면서 카테고리만 만들어놓고, 오랫동안 글 개수 '0개'였던 운영체제 | 컴퓨터구조 카테고리에 글이 생기니 기쁘기도 합니다. 더 기뻐해야 할 것은, 블로그의 글이 늘은게 아니라 제 머리속의 지식이 늘었다는 것이죠 ㅎㅎ 다만 제가 운영체제와 컴퓨터구조를 수업 시간에 분명히 배웠음에도 다시 공부하기로 마음 먹은건 해당 지식들이 가물가물했기 때문이였습니다. 이번에 새로 배우고, 되새긴 내용들도 또 까먹을지 모릅..

article thumbnail
[혼공컴운] 6주차_가상 메모리와 파일 시스템

혼자 공부하는 컴퓨터 구조 + 운영체제 6주차 혼자 공부하는 컴퓨터 구조, 드디어 마지막 주차네요. 가상메모리 : 연속 메모리 할당 스와핑 메모리에 적재된 프로세스 중에서는 현재 실행되지 않는 프로세스도 있죠. 스와핑(swaping)은 현재 실행되지 않는 프로세스를 임시로 보조 기억장치로 쫒아내고, 새로 생긴 빈 공간에 다른 프로세스를 적재해 실행하는 방식입니다. 프로세스들이 쫒겨나는 보조기억장치의 영역을 스왑 영역(swap space)라고 하며, 현재 실행되지 않는 프로세스가 스왑 영역으로 쫒겨나는 걸 스왑 아웃(swap-out), 스왑 영역에 있던 프로세스가 다시 메모리로 복귀하는 것을 스왑 인(swap-in)이라 합니다. 스와핑을 사용한다면, 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메..

article thumbnail
[혼공컴운] 5주차_프로세스 동기화와 교착상태

혼자 공부하는 컴퓨터 구조 + 운영체제 5주차 혼공컴운 5주차입니다 가장 기대하고 있던 프로세스 동기화와 교착상태 파트입니다! 프로세스 동기화: 동기화란? 여러 프로세스들은 공동의 목적을 수행하기 위해 서로 협력하며 소통하기도 합니다. 서로 협력하는 프로세스들은 실행 순서와 자원의 일관성을 보장받아야 하기에 동기화(Synchronization)가 필수입니다. . 동기화. 낮설면서도 익숙한 단어입니다 가장 쉽게 접할 수 있는 상황은 아마 달력/일정 애플리케이션의 동기화 기능일텐데요. 윈도우 11에서는 구글 캘린더와 연동하여 구글 계정 내 구글 캘린더에 등록한 일정을 윈도우 11 일정 앱에서 볼 수 있는 기능이 있습니다. 일정 주기마다 구글 캘린더로부터 데이터를 가져오나, 주기가 돌아오기 전에 구글 캘린더의..

article thumbnail
[백준 1385번] [Kotlin] 벌집
코딩테스트/Kotlin 2024. 1. 30. 17:54

https://www.acmicpc.net/problem/1385 1385번: 벌집 첫째 줄에는 당신이 있는 방의 번호 a와 출구가 있는 방의 번호 b가 주어진다.1 ≤ a, b ≤ 1,000,000) www.acmicpc.net 난이도 : 플래티넘 5 태그 : 구현, 그래프이론, 그래프탐색, 너비우선탐색 설명 벌집(2292)에 비해 꽤나 매운맛인 벌집 문제 입니다. 위와 같이 생긴 벌집을 대상으로 최단거리를 찾는 BFS을 돌려 풀 수 있겠다는 생각은 빨리 들었으나, 벌집의 모양을 그래프로 나타내는 것에 상당히 어려움을 느꼈습니다. 벌집을 그래프로 나타내라! 그래프는 위와 같이 벌집을 약간 회전시켜 2차원 배열 형태로 나타낼 수 있습니다. 예를 들어 500 * 500 사이즈 배열의 경우, (250, 25..

article thumbnail
Kotlin에서의 Setter를 다루는 방법
언어/Kotlin 2024. 1. 30. 02:22

코틀린 클래스의 생성자와 getter, setter public class Member { private String name; private int age; public Member(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 자바에서 데이터를 담기 위한 클래스를 작성할 때, name, age 라는 두 개의 필드만 존재하..

article thumbnail
[알고리즘] 에라토스테네스의 체 (Sieve of Eratosthenes)
CS 지식/알고리즘 2024. 1. 30. 00:27

에라토스테네스의 체. 이름이 조금 어려운 알고리즘입니다. 에라토스테네스의 체는 고대 그리스 수학자 에라토스테네스가 고안한 소수(Prime Number)를 찾는 알고리즘 중 하나인데요. 일반적으로 정수 n이 소수인지 확인할 때, for문을 돌리며 2~sqrt(n)으로 나누어 떨어지나 확인하는 방법이 있습니다. 하지만 특정 범위 내 여러 개의 수를 소수인지 판단해야 할 때, 각각 2~sqrt(n)으로 나누어 떨어지는지 확인하는 것은 조금 비효율적일 수 있습니다. 하지만, 처음에 범위 내 숫자들에 대해 소수인지 구해놓고 이후에 각 숫자들이 소수인지 확인한다면 더 빠르게 작동할 수 있습니다. 에라토스테네스의 체 에라토스테네스의 체의 원리를 그림으로 표현하자면 위 이미지와 같습니다. 2 ~ 120 범위 내 숫자들..

article thumbnail
[백준 1017번] [Kotlin] 소수 쌍
코딩테스트/Kotlin 2024. 1. 28. 17:24

https://www.acmicpc.net/problem/1017 1017번: 소수 쌍 지민이는 수의 리스트가 있을 때, 이를 짝지어 각 쌍의 합이 소수가 되게 하려고 한다. 예를 들어, {1, 4, 7, 10, 11, 12}가 있다고 하자. 지민이는 다음과 같이 짝지을 수 있다. 1 + 4 = 5, 7 + 10 = 17, 11 + www.acmicpc.net 난이도 : 플래티넘 3 태그 : 수학, 정수론, 소수 판정, 에라토스테네스의 체, 이분 매칭 설명 소수 판정 + 이분 매칭 문제입니다. 이분 매칭에 관해서는 아래 글을 참고해주세요. https://uknowblog.tistory.com/444 [알고리즘] 이분 매칭 (Bipartite Matching) 이분 매칭을 간단히 이야기하면 연애 매칭 프로..

article thumbnail
[혼공컴운] 4주차_운영체제, 프로세스, 스레드

혼공 컴퓨터구조 + 운영체제 4주차 어느덧 벌써 4주차에 접어들었네요. 이제 얼마 남지 않은게 느껴집니다. 운영체제를 알아야 하는 이유 운영체제? 컴퓨터는 전원 플러그만 꽂는다고 작동하는 것이 아닙니다. 운영체제라는 특별한 프로그램의 지휘 하에 작동하는데요. 제가 사용하는 운영체제만 하더라도 윈도우, macOS, Linux, 안드로이드 등이 있습니다. 이외에도 iOS, UNIX, Chrome OS, 퓨시아 등 여러 운영체제들이 있죠. 이러한 운영체제들은 1~3주차의 컴퓨터 부품들과 프로그램을 관리하는데 핵심 역할을 합니다. 운영체제는 게임이나 Intellij, 계산기, 브라우저 등과 같은 프로그램으로써 메모리에 적재되어야 합니다. 하지만 운영체제는 매우 특별한 프로그램이므로 항상 컴퓨터가 부팅될 때 메모..

article thumbnail
[혼공컴운] 3주차_메모리, 캐시, 보조기억장치, 입출력장치

혼공 컴퓨터구조 + 운영체제 3주차 컴퓨터구조+운영체제 벌써 3주차 입니다. 메모리와 캐시 메모리 주기억장치에는 RAM과 ROM이 있습니다. 보통 주기억장치를 말하면 RAM을 의미하며, RAM은 전원을 끄면 내용이 사라져 '휘발성' 저장장치라 부릅니다. 반면 하드 디스크, SSD, USB와 같은 보조기억장치는 전원을 껏다 켜도 남아있기에 '비휘발성'이라 합니다. 보조기억장치는 CPU가 직접 접근하지 못하기에, 보조기억장치에는 주로 보관할 대상을, RAM에는 실행할 대상을 저장합니다. 보통 램은 다다익선이라며 지갑이 허락하는 한도 내에서 램의 용량은 큰 게 좋다고 하는데요 램의 용량이 작다면 프로그램 A를 RAM으로 갖고오고, B를 실행시키려면 B를 RAM으로 가지고 와야 합니다. 반면 램의 용량이 크다면..