전체 글

함께 성장하는 개발자
Computer Science

Process / Thread

❓ Process란? Process란 컴퓨터에서 실행중인 모든 프로그램을 Process라고 한다. process 는 Thread 개념이 등장하기 전 CPU의 처리 단위였다. Process는 최소 1개의 Thread로 구성이 된다. Process 간의 컨텍스트 스위칭은 무겁다 Process 간의 메모리 공유는 어렵다. ❓ Thread란? 한 Process 안에서 여러 작업을 동시에 처리하기 위해서 등장함 Thread란 Process를 구성하는 단위로 현재 CPU 처리의 기본 단위로 사용된다. 한 Process 안의 Thread 끼리의 컨텍스트 스위칭은 가볍다. 한 Process 안의 Thread는 같은 메모리 영역을 사용하기 떄문에 데이터 공유가 쉽다. ( 하지만 Stack과 Program counter는..

Algorithm & Data Structure

[백준] 괄호의 값(2504번) - Python

✅문제 - 괄호의 값(2504번) ✅사용 개념 및 알고리즘◼ 자료구조 : 위의 문제는 괄호를 닫아줄 때 가장 마지막에 넣은 값과 현재 괄호를 비교해야하기 때문에 Stack 자료구조를 사용해야한다. ◼ 알고리즘1) 값을 임시로 저장할 변수 tmp를 1로 설정한다.2) [ or ( 을 만나면 tmp에 2 또는 3을 곱해준다.3) 괄호를 닫을 때 적합성 판단을 한다. 만약 스택이 비어있거나 stack[-1]과 현재 괄호가 매칭되지 않으면 answer = 0 으로 만들고 break 한다.4) 앞의 괄호가 여는 괄호일 경우 answer 에 현재 tmp를 더해준다.5) 괄호를 닫았으므로 tmp 값을 2 or 3으로 나누어준다.  ❓ 위의 4) 과정에서 왜 앞에 여는 기호가 있을 때만 값을 더해줄까?!만약 앞에 기호..

Algorithm & Data Structure

[백준] 동전1 (2293번) - Python / 알고리즘

✅문제 - 동전1 (2293번)  ✅필요 알고리즘 개념 - DP🔵DP의 적용◼ 모든 동전의 가격을 고려하며 dp를 만들면 경우의 수가 복잡하므로 동전의 종류를 1개씩 늘려간다.◼ 처음에는 가장 저렴한 동전 1개만 사용하여 dp를 만든다. (예제 입력의 경우 가치가 1인 동전을 사용한다.)동전의 가치가 1인 경우 DP는 위의 표와 같다. 위의 표는 동전의 가치가 1인 동전만을 사용해 k원을 만든 것이다.◼ 동전의 가치가 2인 경우를 dp에 추가하자현재 dp[n]은 n원을 1원짜리 동전으로 만들 때의 경우의 수이다.2원 짜리 동전을 사용하게 되면 (1) 1원짜리 동전으로만 경우의 수를 만든 경우와 (2) 2원짜리 동전도 사용한 경우의 수가 있다.위의 (1)의 경우의 수가 dp[n] 이고 (2)의 경우는 d..

Algorithm & Data Structure

[백준] 내리막 길 (1520번) - Python/알고리즘

✅문제 - 내리막 길 (1520번) ✅필요 알고리즘 개념 - DP/DFS🔵 DFS 와 BFS 중 무엇을 쓸 것인가◼ 이 문제는 경로 찾기 문제와 유사하므로 DFS와 BFS 중 하나를 써야 하는데 왜 DFS를 사용할까?이 문제의 경우 경로가 겹칠 때 다른 경로에게 영향을 주기 때문에 먼저 DFS로 한 경로를 끝까지 탐색하는 것이 유리하다. 🔵 DP 사용 법 ◼ 2차원 리스트에 (x,y)에서 (row,col) 까지 가는 경우의 수를 저장한다. DFS를 진행하던 도중 이미 들렀던 지점인 경우에는 바로 dp 값을 사용한다. ✅코드 설명import sysrow,col = map(int,sys.stdin.readline().rstrip().split())board = [] delta = [(1,0),(-1,0)..

Algorithm & Data Structure

[백준] 이분 그래프 (1707번) - Python / 알고리즘

✅문제 - 이분 그래프 (1707번) ✅필요 알고리즘 개념 - BFS🔵 BFS 활용 방법◼ 이 문제는 연결된 두 Node를 다른 색으로 색칠하는 것이 가능한지 물어보는 문제이다. 예를 들어 아래 처럼 인접한 두 노드를 서로 다른 색으로 칠할 수 있다면 이분 그래프로 나눌 수 있는 그래프이다. 하지만 아래의 경우 Node 5번을 보면 빨간 Node와 파란 Node와 모두 연결돼 있기 때문에 인접한 Node와 다른 색으로 칠할 수 없다. 그러므로 이분 그래프가 아니다.이 아이디어를 활용하여 BFS를 구현하면 이분 그래프를 확인할 수 있다.✅코드 설명 - BFS 구현 부분def bfs(graphs,visited): queue = deque() # graphs 는 edge를 입력 받은 list이다 ..

후뿡이
개발자 '왜?'길 인생