전체 글
[백준] 1로 만들기 / 1463번 / 파이썬 / Python
🎫code ) n = int(input()) dp = [0 for _ in range(n + 1)] for i in range(2, n + 1): dp[i] = dp[i - 1] + 1 print(dp, '0') if i % 2 == 0 and dp[i] > dp[i // 2] + 1: dp[i] = dp[i // 2] + 1 print(dp, '1') if i % 3 == 0 and dp[i] > dp[i // 3] + 1: dp[i] = dp[i // 3] + 1 print(dp, '2') print(dp[n]) 📌 description ) 문제출처 : www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진..
[OS] 프로세스와 스레드 동기화
✨프로세스 동기화 : 하나의 자원을 한 시점에 하나의 프로세스만이 접근 ✨스레드 동기화 : 하나의 코드 블록 또는 메소드를 한 시점에 하나의 스레드만이 접근 🟠한 스레드의 특정 작업이 끝나기 전까지 다른 스레드의 방해를 받지 않도록 하는 것이 필요함(데이터 일관성 유지를 위해) 그래서 도입된 개념이 바로 임계 영역과 잠금(락, lock)이다. 🟠공유 데이터를 사용하는 코드 영역을 임계 영역으로 정해놓고, 공유 데이터(객체)가 가지고 있는 락을 획득한 단 하나의 스레드만이 해당 영역 내의 코드를 수행할 수 있게 한다. 그리고 해당 스레드가 임계 영역 내의 모든 코드를 수행하고 벗어나서 락을 반납해야지만 다른 스레드가 반납된 락을 획득하여 임계영역의 코드를 수행할 수 있게 된다. 🟠이처럼 한 스레드가 진행 ..
[Django] 장고는 무엇일까? with ORM(Object-Relational Mapping)
💂♀️그 동안 배우고 프로젝트 때도 활용했던 장고, 오늘부터 조금씩이라도 정리해보려고 한다.💂♂️ Django Django란 무엇일까 웹을 `쉽고 빠르게` 만들 수 있도록 도와주는 웹 프레임워크 `Python 기반 웹 프레임워크`, 풀스택 프레임워크이다. 일반적으로 파이썬을 웹 사이트 구축에 쓴다면 django 또는 flask를 사용한다. 주요 특징 MVC 패턴이 아닌 MTV 패턴을 사용 -> Model, Template, View ORM 기본 제공 이는 아래에서 자세히 다뤄보자. DBMS의 경우 SQLite를 사용 Django Admin을 통해 관리자 페이지로 간편하게 CRUD를 할 수 있게 해줌 로그인, DB, 관리자 기능 등 기본적으로 제공하는 기능들이 많기 때문에 이를 잘 익혀서 사용만 하면 ..
[백준] 효율적인 해킹 / 1325번 / 파이썬 / Python
🎫code ) import sys from collections import deque input = sys.stdin.readline def bfs(lst): q = deque(lst) while q: x = q.popleft() visit[x] = 1 for i in adj[x]: if not visit[i]: q.append(i) visit[i] = 1 return visit.count(1) n, m = map(int, input().split(' ')) adj = [[] for _ in range(n + 1)] for _ in range(m): a, b = map(int, input().split(' ')) adj[b].append(a) res = [] max_v = 0 for i in range..
[OS] 컨텍스트 스위칭(문맥교환Context Switching)
🎂 컨텍스트 스위칭(context switching)이란? CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트에 의해 다음 우선 순위를 가진 프로세스가 실행되어야 할 때 기존의 프로세스 정보들은 PCB에 저장하고 다음 프로세스의 정보를 PCB에서 가져와 교체하는 작업을 컨텍스트 스위칭이라 한다. 이러한 컨텍스트 스위칭을 통해 우리는 멀티 프로세싱, 멀티 스레딩 운영이 가능하다 ! 컨텍스트 스위칭은 다음과 같은 상황에서 일어난다. I/O interrupt CPU 사용시간 만료 자식 프로세스 Fork 이러한 컨텍스트 스위칭이 일어날 때 다음번 프로세스는 스케줄러가 결정하게 된다. 즉, 컨텍스트 스위칭을 하는 주체는 스케줄러이다. 단점 : PCB를 저장하고 가져올때는 CPU가 아무런 일도 하지 못하게 된..
[백준] 차이를 최대로 / 10819번 / 파이썬 / Python
💡solutions ) 💬 n값이 크지 않으니까, permutations 써서 모든 경우를 찾는 브루트포스 알고리즘 구현 🎫code ) import sys from itertools import permutations as permu input = sys.stdin.readline n = int(input()) arr = list(map(int, input().rstrip().split(' '))) max_v = 0 for p in permu(arr, n): sum = 0 n_list = list(p) for i in range(1, len(n_list)): tmp = abs(n_list[i - 1] - n_list[i]) sum += tmp max_v = max(max_v, sum) print(max_..
[OS] 프로세스와 스레드
💫 간단 개념 💬 프로세스(Process) 현재 실행중인 프로그램이며, 운영체제로부터 고유 공간과 자원을 할당 받아 실행되는 작업 단위 💬 스레드(Thread) 해당 프로세스 안에서의 작업 흐름을 보여주는 실행 단위, 한 프로세스 내 스레드들 간 메모리를 공유한다. 💫 주요 특징 💬 프로세스 운영체제로부터 고유의 주소 공간과 자원을 할당 받아 실행 CODE, DATA, HEAP, STACK 구조로 이루어져 있음 다른 프로세스의 영향을 받지 않고 독립적으로 실행 과거에는 하나의 프로세스만 실행할 수 있었지만, 지금은 병렬 처리하는 '멀티 프로세스(멀티 태스킹)' 가능 💬 스레드(Thread) 한 프로세스 내에서 여러 스레드를 동시에 실행 가능 -> 바로 '멀티 스레드' 스택은 고유하게 할당 받지만 그 외 ..
[OS] 운영체제(Operating System)의 개념
💫운영체제란? 하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하는 시스템 소프트웨어다. 시스템의 자원 및 동작을 관리한다. 더 쉽게 말하자면, 컴퓨터의 복잡한 하드웨어를 잘 모르더라도 컴퓨터를 사용하고 프로그램을 만들 수 있도록 지원해주는 소프트웨어다. 💫운영체제의 사용 목적 컴퓨터 자원을 더 효율적으로 사용하게끔 도와준다! 운영체제를 사용하는 이유는 처리능력 향상, 사용가능도 향상, 신뢰도 향상, 응답시간 단축하기 위함이다. 처리능력(Throughput) 시스템의 생산성을 나타내는 단위, 일정 시간 내에 시스템이 처리하는 일의 양 응답시간(Turn Around Time) 시스템에 작업을 의뢰한 시간부터 처리가 완료될 떄까지 걸린 시간 사용가능도(Availability) 시스템..