전체 글 50

[백준] 15685 드래곤 커브 python 풀이

문제난이도: 골드3알고리즘 분류: 구현, 시뮬레이션요약: 주어진 정보를 통해 n개의 드래곤 커브를 구현했을 때, 정사각형의 네 꼭짓점이 모두 드래곤 커브의 일부인 것의 개수를 출력하기 풀이커브 구하기각 세대마다 생성되는 커브의 개수와 방향에 관한 규칙을 살펴보았다.동(0) 북(1) 서(2) 남(3)세대선분의 개수방향01 (2^0)012 (2^1)0 124 (2^2)0 1 2 138 (2^3)0 1 2 1 2 3 2 1 세대가 증가할수록 선분의 개수는 2배씩 증가하고,방향은 이전 세대의 리스트의 마지막 원소부터 90도 회전한 방향으로 추가되는 것을 볼 수 있다.  방문 여부 표시드래곤 커브 좌표를 표시하기 위해 visited 2차원 배열을 생성하고, 방문한 좌표에 대한 값을 업데이트한다. curve 리스트..

Algorithm/Baekjoon 2024.06.28

[Github 도구] submodule

깃허브에 알고리즘 풀이 관련 레포지토리가 여러 개로 나누어져 있어서 이를 하나로 통합해서 관리하고, 동시에 기존 커밋도 그대로 유지할 수 있는 방법을 찾아보았다. 그래서 github 도구 중 하나인 submodule을 알게 됐다.submodulegit 프로젝트 안에 다른 git 저장소를 하위 디렉토리에 포함시켜 관리하는 도구상위 저장소: 슈퍼 프로젝트 / 하위 저장소: 서브모듈각 저장소의 커밋을 독립적으로 관리서브모듈 저장소가 private일 경우, 해당 모듈을 클릭했을 때 접근할 수 없음서브모듈 저장소가 업데이트 돼도 슈퍼 프로젝트에 자동으로 반영되지 않고 직접 수행해야 함이를 통해 복잡한 프로젝트를 여러 저장소로 분리하여 개발, 관리, 배포를 용이하게 함 command서브모듈 등록(추가)$ git s..

ETC 2024.06.28

[백준] 2636 치즈 python 풀이

문제난이도: 골드4알고리즘 분류: 구현, 그래프, 시뮬레이션, 너비 우선 탐색요약: 공기 중에서 치즈가 모두 녹아 없어지는 데 걸리는 시간과 모두 녹기 한 시간 전에 남아있는 치즈조각이 놓여 있는 칸의 개수 출력하기 풀이공기와 접촉된 칸에 대한 처리queue에 공기의 좌표를 담고 하나씩 값을 꺼내 공기와 접촉된 칸에 대해 녹이는 작업을 진행한다.이때, 판의 가장자리에는 치즈가 놓여있지 않다는 전제에 따라 (0, 0)부터 탐색한다.(0, 0)을 시작으로하면 치즈의 구멍에 대한 접근이 불가능한 것을 처리할 수 있다. 해당 좌표 값에 방문하지 않았을 경우에 대하여공기일 경우: queue에 추가치즈일 경우: 공기와 접촉되어 있으므로 해당 칸을 공기로 바꾸고 녹인 개수를 업데이트한다.(board[ny][nx] =..

Algorithm/Baekjoon 2024.06.28

[백준] 13459 구슬 탈출 python 풀이

문제난이도: 골드1알고리즘 분류: 구현, 그래프, 시뮬레이션, 너비 우선 탐색요약: 파란 구슬을 구멍에 넣지 않으면서 빨간 구슬을 10번 이하로 움직여서 빼낼 수 있으면 1을 없으면 0을 출력하기 풀이빨간/파란 구슬의 x, y 좌표를 queue에 담아서 진행 1. 한 방향으로 이동중인 구슬이 멈추는 조건다음 위치가 벽이거나현재 위치가 구멍일 때2. 빨간/파란 구슬이 끝까지 이동했을 때의 위치와 움직인 횟수 확인이동한 빨간/파란 구슬 위치가 같을 경우움직인 횟수 비교 후, 이동거리가 더 많은 구슬이 뒤로 한칸 이동  코드from collections import dequeimport sysinput = sys.stdin.readlinen, m = map(int, input().split())board = ..

Algorithm/Baekjoon 2024.06.28

[백준] 3190 뱀 python 풀이

문제난이도: 골드4알고리즘 분류: 구현, 자료구조, 시뮬레이션, 덱, 큐요약: 뱀이 기어다니다가 벽 또는 자기자신의 몸과 부딪혔을 때까지의 시간 구하기 풀이board 정의하기빈 칸: 0 (정의 시 0으로 초기화)뱀: 1사과: 2 뱀의 위치를 queue에 저장하기queue에 뱀이 차지하고 있는 위치를 [row, col] 형태로 저장이동한 칸에 사과가 있을 경우몸 길이 늘리기: board 상태 업데이트 & queue에 위치 추가이동한 칸에 사과가 없을 경우몸 길이 늘리기 (+1)꼬리가 위치한 칸 비우기: popleft 연산을 통해 가장 먼저 queue에 추가된 요소를 꺼내오는 작업을 수행 (-1)따라서 몸 길이 변화 x 코드from collections import dequeimport sysinput = ..

Algorithm/Baekjoon 2024.06.27

[백준] 2504 괄호의 값 python 풀이

문제난이도: 골드5알고리즘 분류: 구현, 자료구조, 스택요약: 괄호값을 정의한대로 계산하여 출력하기 풀이case 분류1. 열린 괄호stack에 추가하기(append 연산)temp 변수에 해당 괄호열의 값 곱하기2. 닫힌 괄호스택이 비어있거나 스택의 top 값과 짝이 맞지 않을 경우 -> 올바르지 못한 괄호열짝이 맞고 직전에 짝이 맞는 열린 괄호일 경우 -> result 값 업데이트bracket = '()[]' 일 경우 result += 2; result += 3bracket = '[()]' 일 경우 [()에서 ()를 스택에서 제거 후 temp = 3*2; ]에서 result += 6짝이 맞을 경우 -> stack에서 제거하고(pop 연산) temp 값을 해당 괄호열의 값으로 나누기모든 문자 확인 이후 스..

Algorithm/Baekjoon 2024.06.27

[백준] 17144 미세먼지 안녕! python 풀이

문제난이도: 골드4알고리즘 분류: 구현, 시뮬레이션요약: T초 동안 미세먼지가 확산되고 공기청정기가 작동될 때, 남아있는 미세먼지 양 출력하기 풀이미세먼지 확산1. 미세먼지가 확산되어 변화할 값을 저장하는 배열 생성board 배열에 바로 변화할 값을 추가할 경우, 이전의 변화된 값이 다음 진행에 영향을 끼침 -> 안 됨2. 인접한 네 방향으로 확산변화할 미세먼지 배열 업데이트 (dust)확산된 미세먼지 양 업데이트 (spread_amount)3. 해당 위치에서 확산된 미세먼지 양만큼 제거  공기청정기 작동ex) 아래쪽 공기청정기 작동 방식시계방향으로 순환 (동 남 북 서)바람이 불면 미세먼지가 바람의 방향대로 한 칸씩 이동공기청정기에서 부는 바람은 미세먼지가 없는 바람이고, 공기청정기로 들어간 미세먼지는..

Algorithm/Baekjoon 2024.06.27

OSI 참조 모델과 TCP/IP 모델

OSI 참조 모델국제표준화기구(ISO)는 서로 다른 컴퓨터가 네트워크 구조에 상관없이 통신할 수 있도록 OSI 참조 모델을 만들었다.OSI 참조 모델은 컴퓨터 통신 기능을 계층 구조로 나누어 각 계층마다 표준화된 서비스와 프로토콜을 규정한 모델로, 일종의 통신 규칙 모음이다.네트워크에 필요한 프로토콜 기능들을 7계층으로 나누어 복잡성을 줄이고 계층간의 간섭을 최소화한다.이에 따라 각 계층의 원인을 분석할 수 있어 문제 해결이 쉬워지고, 네트워크 장비의 문제 없이 데이터를 송수신할 수 있게 되었다. OSI 참조 모델의 특징계층 간 상하 구조와 독립성OSI 참조 모델의 7계층은 계층 간 상하 구조를 가진다. 상하 구조를 가진다는 것은 모든 하위 계층이 정상적으로 작동해야 상위 계층이 정상적으로 작동할 수 있..

네트워크 기본 개념

컴퓨터 네트워크네트워크는 둘 이상의 컴퓨터와 이들을 연결하는 링크의 조합이다.네트워크의 사전적 의미는 '모뎀이나 LAN, 케이블, 무선 매체 등 통신 설비를 갖춘 컴포터로 서로 연결하는 조직이나 체계, 연결망'이다.통신 설비로 두 대 이상의 컴퓨터를 서로 연결하여 자원이나 정보를 공유할 수 있다. 네트워크 구성 요소 1) PC컴퓨터나 서버 등을 말하며, 네트워크를 사이에 두고 다양한 데이터를 송수신한다.2) 네트워크 접속 장치 / 장비통신망 구성에 가장 기본이 되는 하드웨어로, 데이터를 정상적으로 전송하기 위한 장치다. 스위치와 라우터 등이 해당한다. 스위치는 여러 대의 컴퓨터를 네트워크에 연결하기 위해 한 네트워크 안에서의 데이터 전송을 담당하고, 라우터는 여러 네트워크를 구분 짓고 연결하는 장치다.3..

POSIX 기초

POSIXPOSIX(Portable Operating System Interface)는 이식가능 운영체제 인터페이스의 약자다. 서로 다른 유닉스 운영체제의 공통 API를 정리하여 이식성이 높은 유닉스 응용프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스 규격이다.쉽게 말해, 어떤 OS에서 개발한 프로그램을 다른 OS에서도 쉽고 돌아가도록 하는 표준이다.표준 스트림표준 스트림(Standard Stream)은 특정한 프로그래밍 언어 인터페이스뿐만 아니라 유닉스 및 유닉스 계열 운영체제에서 컴퓨터 프로그램과 그 환경(키보드나 모니터와 같은 장치들) 사이에 미리 연결된 입출력 통로를 가리킨다.일반적으로 유닉스에서 동작하는 프로그램은 실행 시, 세 개의 스트림이 자동으로 열린다. 이를 표..

Computer Science/OS 2024.06.27