Python
-
[프로그래머스] - 숫자 게임Algorithm/프로그래머스 2022. 9. 26. 18:29
문제 [프로그래머스] - 숫자 게임 https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 자연수를 하나씩 부여받습니다. 각 사원은 딱 한 번씩 경기를 합니다. 각 경기당 A팀에서 한 사원이, B팀에서 한 사원이 나와 서로의 수..
-
[Python] import vs runtime개발/Python 2022. 9. 26. 16:39
Python은 Hybrid 언어로 Interpreter를 이용한 Compile이 동작(import time)하고 난 뒤 Runtime이 동작하게 됩니다. import time import time 시 python 파일의 소스코드를 위에서부터 파싱 및 실행을 위한 Byte code를 만들어줍니다. 즉, 파일 내의 Function과 Class method를 제외한 코드들을 실행합니다. Interpreter 영역 runtime 모든 Code가 실행되는 순간 import time vs runtime 이 때 Import와 runtime에 대한 이해가 없다면, 에러를 마주 할 수 있습니다. 아래 코드에서 어떤 동작 결과가 예상하여 봅시다. #a.py import b def function_a(): print('fu..
-
[Python] - Requirements개발/Python 2022. 9. 26. 15:18
Dependency 다른 사용자들이 같은 코드를 돌리려고 하여도 각자의 Env가 다르기 때문에 Package Library들을 사용하기 위해서는 필수적인 Library들을 확인하고 설치하여 주어여한다. freeze 현재의 ENV의 설정 파일을 출력하여 준다. $ pip freeze #Output certifi==2022.6.15 charset-normalizer==2.1.0 idna==3.3 psutil==5.9.0 Pympler==1.0.1 requests==2.28.1 urllib3==1.26.9 list freeze가 가지고 있지 않은 편집할 수 있는 목록까지 보여준다. $ pip list #Output Package Version ------------------ --------- certifi ..
-
[Algorithm] - DFS를 통한 모든 경우의 수Algorithm/Algorithm 2022. 9. 24. 01:49
DFS 특정 Start를 기반으로 Node를 재귀로 타고 들어가 자신이 도착하는 경우의 수를 추출한다. 모든 경우의 수 구하기 아래 경우에서 Node 1에서 4로 가는 경우의 수를 탐색한다고 하여보자. DFS로 구현을 하게 된다면 일반적으로 1-2-3-4 탐색 후 끝나는 것이 일반적이지만, 우리는 모든 경우의 수를 구현해야 한다. 알고리즘 기존의 DFS코드를 활용한다. 이 때 나머지 경우에도 탐색을 해야하기 때문에 Visited edge값을 되돌려주고 임의의 값을 빼준다. 코드 n = 5 edges = [[1,2],[1,3],[2,3],[2,5],[3,4],[3,5],[5,4]] from collections import defaultdict def solution(n,edges): graphs = de..
-
[프로그래머스] - 풍선 터트리기Algorithm/프로그래머스 2022. 9. 21. 01:54
문제 [프로그래머스] - 풍선 터트리기 https://school.programmers.co.kr/learn/courses/30/lessons/68646 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 일렬로 나열된 n개의 풍선이 있습니다. 모든 풍선에는 서로 다른 숫자가 써져 있습니다. 당신은 다음 과정을 반복하면서 풍선들을 단 1개만 남을 때까지 계속 터트리려고 합니다. 임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다. 터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으..
-
[Python] - Cyclic reference개발/Python 2022. 9. 19. 01:47
Python은 Garbage Collection 관리 시 Reference를 Counting하는 방식 우선시하여 메모리를 다룹니다. 이 떄 발생하는 문제점인 Cyclic reference를 다루어보겠습니다. 순환 참조 ( Cyclic reference ) 직관적이며, Object를 카운터하며 0이 되면 Object를 삭제하는 식으로 GC(reference counting)가 동작한다. 해결 할 수 없는 한가지 경우가 생기는데, 두 객체가 서로를 참조하게 되는 경우에서 하나를 삭제하더라도 나머지 Object의 Count는 1개 이기 때문에 Object는 삭제 할 수 없습니다. 예시 my_dict1 = {} my_dict2 = {} my_dict1['dict2'] = my_dict2 my_dict2['dic..
-
[Python] - Garbage Collection개발/Python 2022. 9. 19. 01:47
GB( Garbage Collect ) 현대적인 언어에서 필수적인 존재로, 메모리를 관리에 도움을 준다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C, C++과 같은 언어에서는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. GC를 왜 공부해야 하나? GC는 메모리를 자동으로 관리한다. 자동으로 메모리를 관리하여 최적화가 덜 되어있다. 인스타그램은 Python GC를 사용하지 않는다. (Instagram이 Python garbage collection 없앤 이유 참고) 기존 메모리 관리 문제점 1. 메모리가 남아있는 경우 2. 사용 중인 메모리 삭제 Python의 Garbage Collection Cpython에서의 메모리 관리 측면 Referenc..
-
[Python] - 동작원리( Build , hybrid )개발/Python 2022. 9. 18. 23:55
Python 작업 시, 순환 참조를 하게 만들면 Garbage가 쌓이게 되고 이게 증가하다 보면 실제 사용되는 메모리에 영향을 끼쳐 OOM이 나는 경우가 발생합니다. 이 때문에 Gabage Collection의 동작원리를 파헤치기 위해 어떻게 동작하는지 부터 정리해보려고 합니다. Python의 문법과 Compiler 전공 수업을 들은 바가 있기 때문에 상세한 내용은 생략하고 진행하겠습니다. 1. Build란? 컴퓨터가 실행 가능한 파일로 만드는 것을 Build라고 합니다. 컴퓨터는 0과 1만 이해 할 수 있습니다. 우리가 작성하는 코드(Python, C, Java, Ruby .. ) 과 같은 언어는 고급언어로 컴퓨터가 이해 할 수 있는 기계어로 변경해주는 과정을 말합니다. 일반적으로 Build하는 과정을..