[APS][C++] BOJ G2 16920번 확장 게임 (feat. 우선순위 큐)
📖 APS/BOJ2025. 4. 6. 14:36[APS][C++] BOJ G2 16920번 확장 게임 (feat. 우선순위 큐)

https://www.acmicpc.net/problem/16920문제구사과와 친구들이 확장 게임을 하려고 한다. 이 게임은 크기가 N×M인 격자판 위에서 진행되며, 각 칸은 비어있거나 막혀있다. 각 플레이어는 하나 이상의 성을 가지고 있고, 이 성도 격자판 위에 있다. 한 칸 위에 성이 두 개 이상인 경우는 없다. 게임은 라운드로 이루어져 있고, 각 라운드마다 플레이어는 자기 턴이 돌아올 때마다 성을 확장해야 한다. 제일 먼저 플레이어 1이 확장을 하고, 그 다음 플레이어 2가 확장을 하고, 이런 식으로 라운드가 진행된다. 각 턴이 돌아왔을 때, 플레이어는 자신이 가지고 있는 성을 비어있는 칸으로 확장한다. 플레이어 i는 자신의 성이 있는 곳에서 Si칸 만큼 이동할 수 있는 모든 칸에 성을 동시에 만든..

[프로젝트] PintOS 프로젝트 - PintOS 세팅
🤖 프로젝트2025. 4. 6. 04:23[프로젝트] PintOS 프로젝트 - PintOS 세팅

PintOS 프로젝트를 진행하며 정리한 글입니다. (아마 시리즈처럼 작성하지 않을까 싶은데.. 그냥 간단하게 프로젝트를 수행하면서 필요했던 내용들을 정리하는 느낌으로 작성할 예정입니다.)첫 시작으로 프로젝트를 진행하기 위해, PintOS 개발 환경을 세팅하였다. 이 글은 PintOS를 본격적으로 수행하기 전에 세팅하는 과정을 담고 있다.프로젝트 개요PintOS 프로젝트는 스탠포드 대학에서 운영체제 학습용으로 만들어진 OS인데, 이번에 내가 수행한 프로젝트는 PintOS-Kaist를 이용해서 진행하였다. 약간의 차이가 있다고 언급되어 있는데, 정확히 어떠한 차이가 존재하는지는 잘 모르겠다. 여튼 프로젝트는 PintOS-Kaist 버전을 사용하였고, PintOS-Kaist GitHub을 참고하였다.https..

[C언어] 포인터의 기본 개념
🖥️ Dev/Language2025. 4. 4. 01:41[C언어] 포인터의 기본 개념

C언어의 핵심이자 가장 중요한 개념 중 하나인 포인터의 기본 개념에 대해 정리한 글입니다.변수와 메모리, 그리고 주소의 개념변수와 메모리변수 (Variable)특정 데이터를 저장해두는 이름 (label)ex) int a = 10 ➡️ 변수 이름 = a | 값 = 10모든 변수들은 주소가 존재 ➡️ 변수 이름은 개발자(사람)을 위한 것이라면 주소는 컴퓨터를 위한 값메모리 (Memory)프로그램에서 사용하는 모든 변수들이 저장되는 위치 ➡️ 컴퓨터 메모리(램, RAM) 어딘가에 실제로 저장되어 있음변수가 선언되면, 해당 변수는 메모리 어딘가에 자료형의 크기만큼 공간을 차지하고 값을 저장하고 있음주소 (Address)메모리는 매우 많은 칸들로 구성되어 있고, 각 칸마다 고유의 변호가 있으며 이를 주소(addr..

[Linux] 리눅스 사용자 및 그룹과 파일 권한 관리
🌐 OS/Linux2025. 3. 30. 23:27[Linux] 리눅스 사용자 및 그룹과 파일 권한 관리

리눅스에서의 사용자 및 그룹의 개념과 파일 권한 관리에 대해 정리한 글입니다.리눅스 사용자 (User)리눅스에서 사용자(User)는 시스템의 보안, 접근 제어, 자원 분리에 있어 핵심적인 요소로, 단순히 로그인 계정 이상의 의미를 가지며 서버 운영, 파일 시스템 보호, 네트워크 보안 등 광범위한 영역에 직접적으로 관여한다.리눅스에서 사용자의 개념리눅스는 다중 사용자 운영체제로, 각 사용자의 고유한 식별자와 권한을 가지며, 시스템 자원에 대한 접근 권한이 분리되어 있다.사용자의 주요 속성사용자 이름 (Username) : 로그인 시 사용하는 이름UID (User ID) : 시스템 내부에서 사용자를 식별하는 고유 번호GID (Group ID) : 사용자가 속한 기본 그룹의 식별자홈 디렉터리 : 사용자 전용 ..

[Linux] 리눅스 텍스트 에디터, Vim 사용자 환경 설정 (with. .vimrc)
🌐 OS/Linux2025. 3. 30. 16:11[Linux] 리눅스 텍스트 에디터, Vim 사용자 환경 설정 (with. .vimrc)

이 글은 Vim에 적용할 수 있는 주요 설정들에 대해 정리하였으며, .vimrc 파일을 통해 환경 설정을 적용할 수 있는 방법까지 기술되어 있습니다.Vim 환경 설정Vim 환경 설정은 command mode에서 set 명령어로 임시 설정이 가능하며, 임시 설정은 Vim을 종료 후 다시 실행하면 원래대로 초기화 된다.기본 설정:set nocompatible : vi와의 호환 모드 끄기 (Vim 기능 활성화):syntax on : 구문 강조:set number (or :set nu) : 줄 번호 표시:set relativenumber : 상대 줄 번호 표시:set showcmd : 입력 중인 명령 표시:set showmode : 현재 모드 표시 (INSERT 등)편집 편의 설정:set tabstop=4 (o..

[Linux][Ubuntu] 우분투 패키지 관리자 아카이브 위치 변경
🌐 OS/Linux2025. 3. 29. 02:02[Linux][Ubuntu] 우분투 패키지 관리자 아카이브 위치 변경

우분투 패키지 관리자 아카이브(레포지토리) 위치를 변경하는 방법에 대해 정리한 글입니다.아카이브 변경?우분투 패지키 관리자 아카이브(레포지토리)를 변경한다는 것은 apt가 소프트웨어 패키지를 다운로드 할 때 참조하는 저장소(URL)를 우분투 기본 서버가 아니라 다른 서버로 바꾸는 것을 의미한다. 이번 글에서는 공식 미러 서버인 카카오 미러 아카이브로 변경하는 과정을 담고 있다.아카이브 변경 방법아카이브 변경은 Vim을 이용하여 직접 sources.list 파일을 수정하는 방법으로 진행하였다. (혹시 모를 상황을 대비해 스냅샷을 찍어두고 시작하는 것을 권장합니다.)아래 명령을 이용하여 관리자 권한으로 sources.list 파일을 열어준다.$ sudo vi /etc/apt/sources.listVim으로 ..

[Linux] 리눅스 텍스트 에디터, Vim 설치 및 주요 사용법
🌐 OS/Linux2025. 3. 29. 01:29[Linux] 리눅스 텍스트 에디터, Vim 설치 및 주요 사용법

이 글은 리눅스의 대표적인 CLI 텍스트 에디터인 Vim의 설치와 주요 사용법에 대해 정리한 글입니다.vi 소개 및 Vim설치vi 개요vi는 1976년, UNIX System에서 도입된 표준 텍스트 에디터로, visual의 약어대표적인 vi의 종류로는 vi, Vim, Neovim, nano(GNU nano) 등이 존재vi 종류아래 소개된 모든 텍스트 에디터는 Shell에서 텍스트 편집이 사용된다.viUNIX의 전통적인 텍스트 편집기로, 가장 기본적이고 가벼우며 POSIX 표준에 적합한 텍스트 에디터모드 기반 에디터 (명령 모드 / 입력 모드)Vimhttps://www.vim.org/ welcome home : vim onlineVim - the ubiquitous text editor Vim is a h..

[APS][C++] BOJ S3 9461번 파도반 수열 (feat. 다이나믹 프로그래밍, DP)
📖 APS/BOJ2025. 3. 28. 19:09[APS][C++] BOJ S3 9461번 파도반 수열 (feat. 다이나믹 프로그래밍, DP)

https://www.acmicpc.net/problem/9461문제오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100)출력각 테스트 케이스마다 P(N..

[Linux] Shell 명령어와 파일 관리 명령어
🌐 OS/Linux2025. 3. 26. 02:46[Linux] Shell 명령어와 파일 관리 명령어

이 글은 리눅스에서 사용 가능한 Shell 명령어와 파일 관리 명령어에 대해서 정리하였습니다.Shell에 대한 개념과 리눅스 파일 시스템에 대한 개념은 아래 글에 정리되어 있습니다.[Linux] Linux Shell과 Linux 파일 시스템 [Linux] Linux Shell과 Linux 파일 시스템Linux Shell에 대한 개념적 이해와 Linux의 파일 시스템에 대해 정리한 글입니다.Linux ShellShell이란?Shell(쉘)은 운영체제의 커널(kernel)과 사용자 간의 명령어 전달을 담당하는 인터페이스를 의미한다.devkuk.tistory.comShell 명령어디렉터리 및 파일 목록 표시기본 사용법$ ls [option] [directory or file]option, directory, ..

[Linux] 리눅스 패키지 관리 시스템 (Linux Package Management System) (feat. Ubuntu)
🌐 OS/Linux2025. 3. 26. 01:43[Linux] 리눅스 패키지 관리 시스템 (Linux Package Management System) (feat. Ubuntu)

리눅스의 패키지 관리 시스템에 대해 정리한 글입니다.리눅스 패키지 관리 시스템패키지 관리 시스템 개요패키지 관리 시스템(package management system)은 소프트웨어를 효율적이고 일관되게 설치, 업데이트, 삭제할 수 있도록 하는 도구를 말한다.ios / Android : 앱스토어 or 플레이스토어Linux : (Ubuntu 기준) APT or Gnome Software (우분투 소프트웨어)패키지 관리 시스템의 목적기본적으로 리눅스의 프로그램은 다양한 파일(바이너리 실행파일, 설정 파일, 라이브러리 등)로 구성되어 있어 사용자가 수동으로 관리하기엔 복잡하다는 문제가 존재한다. 따라서 패키지 관리 시스템은 이러한 소프트웨어를 패키지(package)라는 묶음으로 구성하여 관리할 수 있도록 한다...

image