전체 글 47

[Leetcode] Two City Scheduling

solution for Two City Scheduling Problem) Solution) 문제에서 각 cost간의 차이 값을 구했을 때, 차이 값이 작으면 A 도시로 차이값이 크면 B 도시로 가는 것이 비용상 더 효율적이다. 즉 문제에서 제공한 예제에 적용해서 4명의 각 비용의 차이 값을 계산하면 [-10, -170, 350, 10]이 되고 이를 오름차순으로 정렬하면 [-170, -10, 10, 350]이 된다. 여기서 우리는 정렬된 리스트를 기준으로 좌측에서 A로 우측에서 B로 한명씩 보내게되면 최소 비용으로 모든 사람들을 A, B 도시로 반반씩 보낼 수 있게 된다. 특별한 알고리즘에 대한 지식보다는 문제에 대한 이해와 해석 능력이 필요한 문제인 것 같다. class Solution: def two..

알고리즘 2020.06.03

[Python] pickle (데이터 저장 및 불러오기)

이번 포스트에서는 정말 간단하게 python에 pickle을 활용하여 데이터를 저장하고, 저장된 데이터를 불러오는 코드를 알아보겠습니다. pickle은 파이썬의 모든 객체(object)에 대해서 있는 그대로 저장할 수 있는 모듈입니다. pickle은 객체를 바이너리 파일에 저장하기 때문에 아래와 같이 파일을 읽을 때 'wb', 'rb' 처럼 바이너리 형식을 사용해야 합니다. pickle.dump / pickle.load import pickle temp_dict = {'name': 'S', 'id': 1} # 데이터 저장 with open('filename.pkl', 'wb') as f: pickle.dump(temp_dict, f, protocol=pickle.HIGHEST_PROTOCOL) # 데이터..

[Python] Multiprocessing (프로세스 기반 병렬 처리)

프로그램의 실행 속도는 프로그래밍의 아주 중요한 요소입니다. Python에서 프로세스 기반의 병렬 처리를 통해 실행 속도를 향상 시킬 수 있는 방법에 대해서 알아보겠습니다. Python에서는 병렬 처리를 위해 multiprocessing 패키지를 제공합니다. multiprocessing에는 대표적으로 Pool과 Process가 있지만 이번 글에서는 Process에 대해서만 다루도록 하겠습니다. multiprocessing.process Process는 미리 정의한 함수를 하나의 프로세스에 할당하여 실행합니다. 이때, 각 프로세스마다 적당한 인자값을 할당하여 실행할 수 있습니다. [example code] import os from multiprocessing import Process def add_on..

그래프 탐색 알고리즘 [DFS, BFS]

프로그래밍에 자주 사용되는 대표적인 자료구조에는 "그래프"가 있습니다. 오늘 포스팅에서는 그래프를 탐색하는 알고리즘 2가지 DFS와 BFS에 대해서 알아보도록 하겠습니다. 그래프는 정점과 간선으로 이루어져 있는데 간선을 통해서 모든 정점을 방문하는 것을 그래프를 탐색한다고 합니다. 위에서 언급했듯이 그래프 탐색 알고리즘에는 대표적으로 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)가 있습니다. 각각의 알고리즘에 대해서 자세히 알아보도록 하겠습니다. 위 그림을 보시면 두 알고리즘의 차이에 대해서 직관적으로 이해하실 수 있습니다. 각 알고리즘의 명칭에서도 볼 수 있듯이 깊이(자식)를 우선으로 탐색하느냐 아니면 너비(형제)를 우선으로 탐색하느냐의 차이가 있습니다. 1. 깊이 우선 탐색깊이 우선 탐색 (De..

알고리즘 2019.02.27