Python
-
[python] 우선순위 큐 알고리즘 - heapq 모듈Python 2020. 10. 6. 16:40
heap ? 완전 이진 트리를 기본으로 한 자료 구조 자료 구조 형태 중 하나로서 우선순위 큐를 위해 만들어진 구조이다. 코딩 테스트 문제 중 최소값, 최대값을 계속해서 호출해야 하는 경우 heap 구조를 이용하여 구현하면 시간 측면에서 효율적인 구현이 가능하다. heapq ? 우선순위 큐 알고리즘이라고 하는 힙(heap) 큐 알고리즘의 구현을 제공 파이썬의 리스트를 최소 힙처럼 사용할 수 있게 하는 것 import heapq는 내장모듈로서 따로 설치가 필요하지 않다. import heapq Function heapify() 기존 배열(리스트)을 heap 구조로 만들기 my_heap = [1, 3, 2, 6, 8, 0, 6] heapq.heapify(my_heap) print(my_heap) # [0, ..
-
반복문 상태바 라이브러리(tqdm)Python 2020. 8. 17. 21:03
tqdm Python으로 코드를 작성하다 보면 for문을 이용한 반복문을 사용하는 경우가 많다. 그런데 반복문을 많이 하는 경우 결과가 나오기까지 너무 시간이 걸리게 된다. 그럴때 tqdm을 사용하여 진행이 얼마나(몇%) 되었는지 확인하면 심리적 안정감(?)을 찾을 수 있다. 마치 지하철역에서 기차를 기다리면서 전광판을 보는 것과 같은 기분을 느낄 수 있을 것이다. 설치 pip install tqdm 사용법 from tqdm import tqdm 사용 예시 간단한 for문을 이용해서 사용해 보기 범위가 매우 큰 경우 1% 부터 천천히 올라가는 모습을 확인 할 수 있다.(너무 작으면 금방 100%가 되버림) 파라미터 iterable : 반복자 객체 desc : 진행바 앞에 텍스트 출력 leave : boo..
-
파이썬을 파이썬 답게_3Python 2019. 11. 29. 13:47
이전 글 보러 가기 2019/11/22 - [Python] - 파이썬을 파이썬답게_2 파이썬을 파이썬답게_2 이전글 보러가기 2019/09/30 - [Python] - 파이썬을 파이썬답게_1 파이썬을 파이썬답게_1 프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다. 몪과 나머지 - divmod 두개의 수가 주어지고 몫과.. dev-lagom.tistory.com 프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다. 순열과 조합 숫자를 담은 일차원 리스트로 만들 수 있는 순열을 모두 구하기(사전 순으로 정렬) 입력 [2, 1] [1, 2, 3] 출력 [[1, 2], [2, 1]] [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2]..
-
파이썬을 파이썬답게_2Python 2019. 11. 22. 10:06
이전글 보러가기 2019/09/30 - [Python] - 파이썬을 파이썬답게_1 파이썬을 파이썬답게_1 프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다. 몪과 나머지 - divmod 두개의 수가 주어지고 몫과 나머지를 구해야 할때가 있다. ex) 7을 3으로 나눈 몫과 나머지 구하기 일반적으로 a = 7.. dev-lagom.tistory.com 프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다. 원본을 유지한채 정렬된 리스트 구하기 - sorted 파이썬의 sort()함수를 사용하면 리스트의 원소를 정렬할 수 있다. sort함수는 원본의 순서를 변경 시킨다. deep copy와 sort 함수 이용 list1 = [4, 3, 2, 1] list2 = [i for i i..
-
파이썬을 파이썬답게_1Python 2019. 9. 30. 11:33
프로그래머스의 파이썬을 파이썬답게 라는 강의를 보고 정리한 글이다. 몪과 나머지 - divmod 두개의 수가 주어지고 몫과 나머지를 구해야 할때가 있다. ex) 7을 3으로 나눈 몫과 나머지 구하기 일반적으로 a = 7 b = 3 print(a//b, a%b) # 2 1 방법으로 몫과 나머지를 계산 할 수 있다. 그런데 파이썬에는 divmod라는 것이 있는데 a = 7 b = 3 print(divmod(a, b)) # (2, 1) print(*divmod(a, b)) # 2 1 * 를 이용한 unpacking과 같이 사용하여 코드를 작성 할 수 있다. 무조건 divmod를 사용하는 것이 좋은 방법은 아니다. 가독성이나 스타일에 따라서 첫번째 방법을 사용할 수도 있는데 divmod는 큰 숫자를 다룰때 좀 ..
-
[Python] zip() 함수Python 2019. 9. 10. 15:52
zip(*iterable) 동일한 개수로 이루어진 자료형을 묶어 주는 역할을 하는 함수 list(zip([1,2,3], [4,5,6])) # [(1, 4), (2, 5), (3, 6) list(zip([1, 2, 3], [4, 5, 6], [7, 8, 9])) # [(1, 4, 7), (2, 5, 8), (3, 6, 9)] list(zip("abc", "def")) # [('a', 'd'), ('b', 'e'), ('c', 'f')] a = [1, 2, 3] b = "abc" for x, y in zip(a, b): print(x, y) # 출력 1 a 2 b 3 c 리스트나 문자열들의 갯수가 맞지 않은 경우 해당 값은 출력되지 않는다. a = [1, 2, 3, 4, 5] b = "abc" for x, ..
-
Python Anaconda 가상환경 설정하기Python 2019. 8. 29. 15:13
Anaconda Python 기반의 데이터 분석에 필요한 오픈소스들을 모아 놓은 개발 플랫폼 Anaconda를 이용해서 가상환경을 사용하면 여러 프로젝트를 할때 프로젝트 마다 다른 버전의 패키지들을 사용하는데 편리함이 있다. Anaconda navigator GUI를 이용하기 가상환경 만들기 Anaconda Navigator를 키면 아래의 이미지처럼 나온다. 왼쪽에 Environments를 누르면 가상환경 목록들을 볼 수 있다. 가상환경의 목록들의 하단을 보면 Create 버튼이 있다 이것을 이용해 가상환경을 생성 할 수 있다. 이름과 파이썬 버전을 선택하고 Create를 누르면 가상환경이 생성된다. 가상환경 제거하기 Environment 탭에서 하단을 보면 Remove 버튼이 있다. Remove를 누르..
-
SyntaxError: Non-ASCII Character 관련 에러Python 2019. 8. 12. 17:34
code내에 한글을 파이썬이 읽지 못해서 발생하는 에러 SyntaxError: Non-ASCII character '\xec' in file Finding the percentage.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 해결방법 # -*- coding: utf-8 -*- Python파일 첫번째 또는 두번째 줄에 입력한다. (공백이나 대소문자에 주의해야한다.) 알고보니 이 문제는 Python 버전이 2.7이라서 발생했다. 버전 3에서는 발생하지 않는다고 하니 버전을 업그레이드 해야겠다.