전체 글 (172) 썸네일형 리스트형 💻 CS 개념 정리 OS 프로세스와 스레드 차이 프로세스는 운영체제로부터 자원을 할당받아 실행하고, 스레드는 프로세스로부터 자원을 할당받아 실행 하나의 프로세스 안에서 여러 스레드 생성 가능 각 스레드는 개별 스택을 가지고, 프로세스의 전역 메모리 공간을 공유하며 프로그램을 실행 프로세스는 코드/데이터/스택/힙 메모리 기반으로 실행 스레드는 프로세스 안에서 개별적인 스택을 가지고 코드/데이터/힙 영역을 공유하며 실행 deadlock 둘 이상의 프로세스가 서로가 가진 자원을 요구하면서 각자의 자원을 놓지 않아서 더이상 작업을 수행할 수 없이 무한 대기 상태 해결 방법 Prevention : 자원이 어떻게 할당되건간에 데드락이 발생할 수 없는 구조로 만듬 Detection and Recovery : 데드락이 발생할 경우를 찾아.. [알고리즘] 프로그래머스 네트워크 / python, dfs https://programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, computers): answer = 0 visit = [0] * n def dfs(computers, visit, s): stack = [s] while stack: temp = stack.pop() visit[temp] = 1 for i in range(len(visit)): if computers[temp][i] == 1 and visit[i] == 0: stack.appen.. [알고리즘] 프로그래머스 실패율 / python https://programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(N, stages): fail = {} clear = len(stages) for i in range(1, N+1): if clear != 0: count = stages.count(i) fail[i] = count / clear clear -= count else: fail[i] = 0 return sorted(fail, key=lambda x : fail[x], reverse=True) [알고리즘] 프로그래머스 오픈채팅방 / python https://programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def message(lst, dic): if lst[0] == 'Enter': return dic[lst[1]] + "님이 들어왔습니다." elif lst[0] == 'Leave': return dic[lst[1]] + "님이 나갔습니다." def solution(record): answer = [] dic = {} lst = [list(i.split(' ')) for i in record] for i in.. [알고리즘] 백준 12100 2048(Easy) / python, dfs https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net from copy import deepcopy N = int(input()) Board = [list(map(int, input().split())) for _ in range(N)] def rotate(N, B): new_lst = deepcopy(B) for i in rang.. [알고리즘] 백준 14620 꽃길 / python https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므로 진아는 다음해 식목일 부터 꽃길을 걸을 수 있다. 하지만 진아에게는 꽃의 씨앗이 세개밖에 없었으므로 세 개의 꽃이 하나도 죽지 않고 1년후에 꽃잎이 만개하길 원한다. 꽃밭은 N*N의 격자 모양이고 진아는 씨앗을 (1,1)~(N,N)의 지점 중 한곳에 심을 수 www.acmicpc.net def func(lst): dx, dy = [0, -1, 0, 1, 0], [0, 0, -1, 0, 1] ck = [] result = .. [알고리즘] 백준 16956 늑대와 양 / python https://www.acmicpc.net/problem/16956 16956번: 늑대와 양 크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게 이동할 수 있다. 두 칸이 인접하다는 것은 두 칸이 변을 공유하는 경우이다. 목장에 울타리를 설치해 늑대가 양이 있는 칸으로 갈 수 없게 하려고 한다. 늑대는 울타리가 있는 칸으로는 이동할 수 없다. 울타리를 설치해보자. www.acmicpc.net R, C = map(int, input().split()) MAP = [list(input()) for _ in range(R)] dx, dy = [-1, 0, 1, 0], .. [알고리즘] 백준 2484 주사위 네개 / python https://www.acmicpc.net/problem/2484 2484번: 주사위 네개 첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 4개의 눈이 빈칸을 사이에 두고 각각 주어진다. www.acmicpc.net def func(lst): if len(set(lst)) == 1: return 50000 + lst[0] * 5000 if len(set(lst)) == 2: if lst[1] == lst[2]: return 10000 + lst[1] * 1000 else: return 2000 + lst[0] * 500 + lst[2] * 500 for i in range(3): if lst[i] == lst[i+1]: return 1000 + lst[i].. [알고리즘] 백준 2480 주사위 세개 / python https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)*1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)*100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)*100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3*100으로 계 www.acmicpc.net N = sorted(list(map(int, input().split()))) if len(set(N)) == 1: print(10000 + .. [알고리즘] 백준 9037 The candy war / python https://www.acmicpc.net/problem/9037 9037번: The candy war 입력은 표준입력(standard input)을 통해 받아들인다. 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 각각의 테스트 케이스의 첫 줄에는 아이의 인원 N (1 ≤ N ≤ 10)이 주어지고 그 다음 줄에는 각 아이들이 초기에 가지고 있는 사탕의 개수 Ci ( 1 ≤ i ≤ N, 1 ≤ Ci ≤ 30)가 주어진다. 분배 시 C1의 오른쪽에는 C2가, C2의 오른쪽에는 C3가…… 같은 식으로 앉게 되며 CN의 오른쪽에는 C1이 앉게 된다. www.acmicpc.net def check(N, C): for i in range(N): if C[i] %2 == 1: C[i] += 1 return .. 이전 1 ··· 8 9 10 11 12 13 14 ··· 18 다음 목록 더보기