전체 글 364

[Python] 순위

1. 문제 2. 풀이 과정 방법 1) 자신의 앞과 뒤에 있는 선수 수의 합이 n-1개면 정확한 순위를 알 수 있다. 한 노드씩 차례대로 살펴보면서, 자신을 이긴 선수와 진 선수의 수를 구한다. 자신을 이긴 선수를 stack에 넣고 꺼내서 그 선수를 이긴 선수들까지 계속 count해나간다. def ncount(n, g, start): visited = [False]*n stack = [start] visited[start] = True while stack: n = stack.pop() for i in g[n]: if not visited[i]: visited[i] = True stack.append(i) return visited.count(True)-1 def solution(n, results): g..

[Python] 가장 먼 노드

1. 문제 2. 풀이 과정 방법 1) heapq 이용, 방법 2)를 추천 import heapq as hq def solution(n, edge): answer = 0 graph = [[] for _ in range(n+1)] distance = [int(1e9)]*(n+1) for x, y in edge: graph[x].append(y) graph[y].append(x) q = [] hq.heappush(q, (0, 1)) #최소거리, 시작노드 번호 distance[1] = 0 while q: d, node = hq.heappop(q) for n in graph[node]: if distance[n] == int(1e9): #방문하지 않은 노드라면 hq.heappush(q, (d+1, n)) dist..

CH2) Operating System Structure

1. OS Interface 1. Command Interpreter - CLI, shell 2. GUI - folder, icons 2. System Calls 1. System Call 이란 - OS 내부 기능을 호출 - kernel에 파일로 구현되어 있음 - 프로그래머들은 system call을 API(Application Programming Interface)들을 통해 간접적으로 사용 - 직접 사용하지 않는 이유? 1) 사용하기 어려움 2) 다른 OS에서도 같은 프로그램을 실행하기 위해서 2. 종류 1) Process control - process load, execute, end, event, allocate memory 2) File 조작 3) Device 조작 4) Information ..

CS/운영체제 2021.09.01

[Python] 도둑질

1. 문제 2. 풀이 과정 방법 1) result 배열을 만들고 각 집을 털 때마다 자신보다 -2, -3인 지점으로부터 [시작점 포함한 경우, 포함하지 않은 경우] 두 값을 계산하여 저장한다. def solution(money): l = len(money) result = [[0, 0]] result.append([0, money[0]]) #시작점 포함, 시작점 포함X result.append([money[1], 0]) for i in range(3, l+1): temp = [0, 0] temp[0] = money[i-1] + max(result[i-2][0], result[i-3][0]) temp[1] = money[i-1] + max(result[i-2][1], result[i-3][1]) resul..

CH1) Introduction

1. OS란? - (user)소프트웨어와 하드웨어 사이에서 연결을 도와주는 소프트웨어 - 하드웨어를 관리하는 소프트웨어 - kernel + system programs으로 구성되지만, 여기서 핵심은 "KERNEL" *system program : 운영체제를 설치하면 메모장, 날씨 프로그램 등이 기본으로 설치되어 있음 장점 - 개발자가 사용하기 쉽게 인터페이스(system call)을 제공 - hardware를 효율적으로 쓸 수 있게 해준다. ex) 자원 분배(메모리 등, 충돌나는 요청 처리), 자원 보호 2. Computer 작동 1. Start-up : 시작하기 1) bootstrap program이 OS를 실행 - ROM 혹은 EEROM에 저장되어 있는 프로그램 - OS의 kernel을 load & ..

CS/운영체제 2021.08.31

[Python] 여행경로

1. 문제 2. 풀이 과정 방법 1) BFS from collections import deque def solution(tickets): answer = [] #티켓을 출발점을 key로 저장 hash_map = {} for a, b in tickets: if a in hash_map: hash_map[a].append([a, b]) else: hash_map[a] = [[a, b]] def bfs(start): q = deque() #출발하는 지점의 티켓 넣기 for h in hash_map[start]: q.append([h]) while q: arr = q.popleft() #모든 티켓을 사용할 수 있는 경우 답에 추가 if len(arr)==len(tickets): temp = start for ..

[Python] 등굣길

1. 문제 2. 풀이 과정 방법 1) 필요한 부분만 보고 count def solution(m, n, puddles): answer = 0 arr = [[0]*(m) for _ in range(n)] #웅덩이는 -1로 표기 if puddles != [[]]: for x, y in puddles: arr[y-1][x-1] = -1 q = set() #중복 제거 q.add((0, 0)) arr[0][0] = 1 while q: temp = set() for a, b in q: if a == n-1 and b == m-1: return arr[a][b]%1000000007 #하 na = a + 1 if na < n and arr[na][b] != -1: arr[na][b] += arr[a][b] temp.ad..

[Python] N으로 표현

1. 문제 2. 풀이 과정 방법 1) N을 한 개 사용할 때부터 8개까지 사용할 때까지 돌면서, 찾는 값이 나오면 종료한다. 1개일 때 : N(1) 2개일 때 : N(1) + 연산자 + N(1) 3개일 때 : N(1) + 연산자 + N(2), N(2) + 연산자 + N(1) ... 여기서 연산자가 +, *일 때는 연산자 기준으로 좌우가 바뀌어도 같은 값이지만 -, //는 다른 값이 나올 수 있어서 추가로 고려해주어야 한다. def solution(N, number): answer = 0 arr = [] for i in range(1, 9):#사용하는 N의 수 temp = set() #중복제거를 위해 집합 사용 temp.add(int(str(N)*i)) #5, 55, 555 for j in range(1,..