프로그래밍 & 알고리즘 & IT 18

파이썬 cpu 병렬 연산 (feat. joblib 모듈)

joblib 사용 병렬연산 (python)¶ 오늘은 파이썬 모듈 joblib을 이용하여 병렬연산 하는 방법을 알아보겠다. 이는 cpu 코어를 활용한 방법으로 각자 코어수에 맞추어 잘 활용하면 된다. 먼저 joblib 모듈의 Parallel, delayed 함수를 import 한다. 그리고 시간 계산을 위해 time 모듈도 import 해준다. In [1]: import time from joblib import Parallel, delayed 그리고 예시를 위해 아래와 같은 함수를 정의하였다. 1부터 100만까지 더하는 함수이다. In [2]: def make_million(p): temp_num = 0 for k in range(1000000): temp_num += k return temp_num 위..

[나동빈 코딩테스트] DFS 구현하기 (재귀함수 사용)

### DFS(깊이 우선 탐색) 함수 구현하기 (5줄짜리 코드) def dfs(graph, v, visited): #그래프의 인접리스트, 시작점, visited 리스트 순 visited[v] = True #방문 표시 후 해당 위치 출력 print(v, end=" ") for k in graph[v]: #해당 노드의 인접노드들 하나씩 체크 if not visited[k]: #방문을 안했다면 dfs 함수를 재귀적으로 적용 dfs(graph,k,visited) # 사용 예시 :: 먼저 인접 리스트를 정의하고 visited 리스트를 만든후에 dfs 함수에 대입. graph = [ #인접 리스트 [], #편의상 0인 노드 있다고 가정 [2,3,8], [1,7], [1,4,5], [3,5], [3,4], [7], ..

[나동빈 코딩테스트] DFS 문제 (얼음과자 만들기)

#나동빈 DFS 문제 - 얼음과자 만들기 #난이도 : 중상 n, m = map(int, input().split()) ice_map = [] # 0이면 얼음, 1이면 틀 for _ in range(n): new_line = list(map(int, input().split())) ice_map.append(new_line) def dfs(i,j): # 세로, 가로 순. dfs 탐색을 통해 얼음과자 1개 만듬. (덩어리) if i = n: # 범위 밖이면 return return if j = m: # 범위 밖이면 return return if ice_map[i][j] == 1: # 원래 1이었던 구간 return False else: # 새로이 찍은 점 (1이 아니었던 ..

[백준 시뮬레이션 문제 3190] 뱀

#백준 시뮬레이션 문제 3190번 - 뱀 #난이도 : 중상 N = int(input()) #맵의 가로 세로 길이 K = int(input()) apple_map = [] for k in range(N): #사과의 위치를 기록. apple_map.append([0] * N) body_map = [] for k in range(N): #자기 몸의 위치를 기록. body_map.append([0] * N) for k in range(K): y, x = map(int,input().split()) #행,열을 순서대로 받음. apple_map[y-1][x-1] = 1 L = int(input()) #방향 변화 횟수 schedule_li = [] for k in range(L): t, d = input().spli..

[백준 시뮬레이션 문제 14503] 로봇 청소기

## 백준 온라인 저지 시뮬레이션 문제 14503번 - 로봇 청소기 #난이도 : 중 N, M = map(int,input().split()) r, c, d = map(int,input().split()) room = [] for i in range(N): #전체 맵 room.append(list(map(int,input().split()))) mark_map = [] #이미 청소한곳을 마크하는 맵 for i in range(N): mark_map.append([0]*M) direction_li = [0,1,2,3] #북, 동, 남, 서 순 dx = [0,1,0,-1] dy = [-1,0,1,0] pos_x = c pos_y = r mark_map[pos_y][pos_x] = 1 tol = 0 count ..

[백준 구현문제 10773] 제로

#백준 구현 문제(10773) - 제로 #0이 들어가면 바로 직전 값을 빼도록 하여 들어가 있는 값들의 최종 합을 구하는 문제 #난이도 : 하 K = int(input()) num_li = [] for i in range(K): add_num = int(input()) if add_num == 0: num_li.pop(-1) #가장 최근에 들어간거 out else: num_li.append(add_num) answer = sum(num_li) print(answer) # 시간복잡도 : O(K)

[백준 시뮬레이션 문제 1966] 프린터 큐

#백준 시뮬레이션 문제 - 1966번 프린터 큐 #난이도 : 중 n_test = int(input()) count_li = [] for k in range(n_test): #테스트의 개수만큼 반복 N, M = map(int,input().split()) #N개의 문서와 타겟이 되는 M번째 문서를 입력. import_li = list(map(int,input().split())) #N개의 문서의 중요도를 순서대로 입력. 시뮬레이션이 진행되면서 계속 갱신됨. record_li = [i for i in range(N)] #1번째부터 N번째 문서를 나열. (단, 0부터 시작함). record_li는 시뮬레이션이 실행되면서 계속해서 갱신되며, 현재 남아있는 문서들의 순서를 나타냄. count = 0 #M번째 문서..