전체 글 364

[Windows 10] MySQL 설치

0. 설치 전 - 현재 사용 가능한 최신 버전 : MySQL Community 8.0 - Windows 운영체제 기준 : Windows 7 이상, Windows Server 2008 R2 이상의 버전에서 설치 가능 1. MySQL 설치 https://dev.mysql.com/downloads/installer/에 접속해서 'Select Operating System: Microsoft Windows'를 선택한다. MySQL Community 8.0은 64bit용이 별도로 없고, 32bit를 설치하면 필요에 따라 64bit용을 제공한다. 아래 사진에서 두 번째 파일을 설치한다. *첫 번째 파일은 웹에서 다운로드되면서 설치가 되기 때문에, 인터넷이 느린 환경이거나 MySQL측 서버에 문제가 있으면 설치가 잘..

개발환경설정 2021.09.14

CH4) Threads

1. Thread 1. Thread의 개념 - 실행의 가장 작은 단위 - stack과 register는 분리해서 가짐 : thread마다 독립적으로 실행 흐름을 갖기 위해서 - 메모리는 공유하고 있어서 process간 통신이 많은 경우 유리한 구조 2. Thread를 사용하는 이유 1) 병렬성을 높일 때 효율적 - process 생성은 memory to memory copy라서 thread 생성이 더 빠르고, 가벼워서 많이 생성 가능 - 처리 가능한 동시 접속자 수 증가 2) 자원을 효율적으로 사용 : thread는 process의 메모리 안에서 해결 3) IPC를 사용하지 않고 data 공유 가능 2. Multicore Programming 1. 개념 - core 1개에 thread 1개 mapping..

CS/운영체제 2021.09.12

[Python] 길 찾기 게임

1. 문제 2. 풀이 과정 방법 1) 배열로 tree를 구성한 후, 순회 import sys sys.setrecursionlimit(10**6) class Node(object): def __init__(self, i, data_set): self.left_idx = -1 self.idx = i self.right_idx = -1 self.num = data_set[0] self.x = data_set[1] self.y = data_set[2] def pre_order(t, i, result): if i == -1: return result.append(t[i].num) pre_order(t, t[i].left_idx, result)#왼 pre_order(t, t[i].right_idx, result)#..

[Python] 후보키

1. 문제 2. 풀이 과정 from itertools import combinations def solution(relation): row = len(relation) col = len(relation[0]) answer = set() for i in range(1, col+1): for com in combinations(range(col), i): #속성들의 조합 #최소성 검사 minimality = True for a_tup in answer: if set(a_tup) & set(com) == set(a_tup): minimality = False break #최소성을 만족, 유일성 검사 if minimality: temp = set() for k in range(row): temp.add(tupl..

[Python] 실패율

1. 문제 2. 풀이 과정 def solution(N, stages): rate = [0]*(N+2) total = len(stages) #도전자 수 for stage in stages: rate[stage] += 1 result = [] for i, r in enumerate(rate[1:N+1], start = 1): if total == 0: result.append((0, i)) continue temp = rate[i]/total #실패율 total -= rate[i] #스테이지에 도달한 플레이어 수 result.append((temp, i)) return list(map(lambda x:x[1], sorted(result, key = lambda x:x[0], reverse = True)))

[Python] 오픈채팅방

1. 문제 2. 풀이 과정 def solution(record): user = {} result = [] for r in record: order = r.split() if order[0] == "Enter": user[order[1]] = order[2] result.append((order[1], "님이 들어왔습니다.")) elif order[0] == "Leave": result.append((order[1], "님이 나갔습니다.")) elif order[0] == "Change": user[order[1]] = order[2] answer = [] for uid, command in result: temp = user[uid]+command answer.append(temp) return answer

[Python] 방의 개수

1. 문제 2. 풀이 과정 방법 1) arrows를 하나씩 보면서 그 때마다 면이 생기면 count를 했다. 면이 생기는 경우는 크게 두 경우로 나눠볼 수 있다. 1. 이미 지나간 점(vertex)를 또 지나가는 경우 2. 다른 점으로 이동하면서 간선들 간에 교점이 생기는 경우 두 경우는 동시에 발생할 수도 있어서 if를 두 번 사용하여 계산하였다. 여기서 주의해야 할 점은 이미 지나간 간선을 다시 지나가면서 중복 count되지 않도록 해야 한다. 코드에서는 지금 지나가는 간선이 edg에 있는지 확인하는 걸로 중복되지 않도록 했다. def solution(arrows): answer = 0 dxy = [(0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1), (-1, ..

CH3) Process

1. Process란? 1. process의 개념 : 프로그램이 메모리에 올라가서 수행 중인 상태, 프로그램의 instance 2. process가 필요한 이유 진행되는 상태를 표현해야 한다. 다른 프로세스들과 번갈아가면서 진행시키기 때문에 상태를 저장해놔야지 다시 수행할 수 있다. Process가 저장하는 대표적인 정보는 다음과 같다. 1) Current instruction(PC) = 다음에 수행해야 하는 instruction의 위치 2) Register 값 3) (가상)메모리 값 4) Parent info = 자신을 생성한 parent를 가리키는 포인터 2. Process의 가상 메모리 1. 가상 메모리의 개념 - 사용할 수 있는 공간이 4GB가 있다고 하면, 그중 극히 일부만 사용한다. - 프로그..

CS/운영체제 2021.09.05