본문 바로가기

컴퓨터/python

(21)
[python] heapq 파이썬의 heapq 모듈은 우선순위 큐 알고리즘의 구현을 제공한다. 따라서 heapq를 사용하여 최소힙과 최대힙을 구현할 수 있다. heappush(heap, item) 힙의 조건을 유지하며 item을 heap으로 push한다. heappop(heap) 힙의 조건을 유지하며 heap에서 가장 작은 item을 pop하고 반환한다. heap이 비어있다면 IndexError가 발생한다. 최소 힙 heapq는 기본적으로 최소 힙을 구현한다. 백준에 최소 힙을 구현하는 문제가 있어 적용하여 보았다. 1927번: 최소 힙 (acmicpc.net) 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가..
[python] Set() 집합 연산 Set은 수학에서 배웠던 집합과 같은 개념이다. 순서와 중복이 가능한 리스트와는 다르게 순서도 없고 중복을 허용하지 않는다. 수학의 연산과 같이 합집합, 교집합, 차집합 연산 기능을 각각 수행할 수 있다. 1. 합집합 - 합집합은 | 연산자와 union 함수를 이용한다. - 두개의 집합에서 중복되는 요소를 삭제한 후 새로운 집합을 반환한다. s1={1,2,3} s2={3,4,5} print(s1|s2)# {1,2,3,4,5} print(s2.union(s1))# {1,2,3,4,5} 2. 교집합 - 교집합은 & 연산자와 intersection 함수를 이용한다. - 두개의 집합에서 공통요소만을 포함해 새로운 집합을 반환한다. s1={1,2,3} s2={3,4,5} print(s1&s2)# {3} print..
[python] deque from collections import deque 그냥 리스트를 사용하는 것보다 deque를 사용하면 속도가 훨씬 빠르다. (O(1)) 리스트 함수와 거의 비슷하지만 deque에서 기억해야 할 함수를 보자면 다음과 같다. - appendleft() - extendleft() - popleft() - rotate() *양수값은 오른쪽으로 음수값은 왼쪽으로 회전 2164번: 카드2 (acmicpc.net) 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net
[python] local variable 'x' referenced before assignment 해결 다음과 같은 에러사항은 외부에 선언한 전역변수를 함수 내에서 지역변수로 호출했기 때문에 발생한다. x=0 def addList(x): x +=1 Error UnboundLocalError: local variable 'x' referenced before assignment Solution 함수 내부의 변수명 앞에 global을 붙여준다. x=0 def addList(x): global x x +=1
[python] 2차원 배열 입력 받기 파이썬에서 간단하게 2차원 배열을 입력받는 방법은 크게 3가지로 구분할 수 있다. ▶ 각 원소를 입력받기 arr = [for _ in range(n)]# 배열의 가로길이 for i in range(n): arr[i] = list(map(int, input().split())) ▶ 원소에 list 자체를 추가하기 arr=[] for i in range(n): arr.append(list(map(int, input().split()))) ▶ 선언하면서 입력받기 arr=[list(map(int, input().split())) for _ in range(n)] arr2 = [[0 for _ in range(n)] for _ in range(n)]# n행 n열의 2차원배열을 0으로 초기화 *참고 블로그 [Pyt..
[Python] 파이썬 리스트 요소 제거 1. 인덱스로 제거 del 리스트명[인덱스] : 제거된 값 반환x, 범위제거 가능(유연) nList = [1,2,3] del nList[0] print(nList) #[2,3] nList2 = [1,2,3,4] del nList2[1:3] print(nList2) #[1,4] nList2 = [1,2,3,4] del nList2[:] print(nList2) #[] 리스트명.pop(인덱스) : 제거된 값 반환o nList = [1,2,3] nList.pop(1) print(nList) #[1,3] nList2 = [1,2,3,4] nList.pop() print(nList) #[1,2,3] # 매개 변수가 존재하지 않을 시 자동으로 -1값이 들어가 마지막 요소 제거 2. 원소의 값으로 제거 리스트명.re..
[Python] 한 번에 여러 수 입력 받기 (map, sys.stdin.readline()) 보통 python에서 입력받을 때는 input 함수를 사용한다. 여러 개의 값을 입력받기 위해서는 split을 사용하면 된다. *map : 리스트의 요소를 지정된 함수로 처리하며, 여러 개의 데이터를 한번에 다른 형태로 바꾸는 경우 사용한다. map(func, iterable) func : 적용 함수 iterable : 반복 가능한 자료형 map으로 반환하기 때문에 형변환을 시켜주어야 한다. # 값 2개를 입력받기 x,y = input().split() # 값 2개를 정수형으로 입력받기 x,y = map(int, input().split()) # 리스트로 입력 받기 aList = list(map(int, input().split())) # 여러 줄로 입력받기(3줄) bList = [input() for ..
[Python] 문자열 포함 여부 확인 파이썬에서 문자열 포함 여부를 체크할 때 두 가지 방법이 존재한다. 1. in, not in 해당 문자열이 존재하면 True를 존재하지 않으면 False를 리턴한다. li=['hello', 'python'] alpa = 'he' for i in li: if alpa in i: print(alpa) # he 2. find() 해당 문자열이 존재하면 시작 인덱스값을 리턴한다. 존재하지 않는 경우 -1을 리턴한다. str = 'hello python' print(str.find('p')) print(str.find('a')) # 6 # -1

728x90