코딩테스트 준비용 파이썬 기초

코코코딩을 합시다·2024년 5월 19일

파이썬 자료구조

from collections import deque

append(), appendleft(), pop(), popleft()만 기억하면 됨

집합

딕셔너리처럼 {}로 쓴다.
대신 생성할 때는 딕셔너리랑 안 헷갈리게 new_set = set()으로 써야 한다.

딕셔너리

  • .get(keys,default)
  • dic[key] = dic.get(key, 0) + 1 : 값이 있으면 1을 더하고 없으면 0 세팅
  • .items() : 키&밸류 튜플로 보기
  • key in dic: 키값이 딕셔너리에 존재하는지 확인, 시간 복잡도 O(1)
  • del dic[key] : 키값 삭제

우선순위 큐

import heapq

hq = []
#heappush
heapq.heappush(hq,2)
heapq.heappush(hq,1)
heapq.heappush(hq,3)

#heappop
heapq.heappop(hq) #1

#n개 큰수/작은수 반환 (pop ㄴㄴ)
heapq.nlargest(3, hq)
heapq.nsmallest(3, hq)

이차원 리스트

#생성 : array = [[0 for _ in range(N)] for _ in range(N)]

# 출력 : 
for row in array:
for elem in row:
print(elem, end=' ')

# 리스트 돌리기 :  
pan2 = list(map(list,zip(*pan))) -> 행과 열이 뒤바뀐다(90도 돌리기)

# 이중리스트 합 : 
print(sum(sum(arr,[])))

리스트 컴프리헨션

  • [표현식 for 항목 in 반복가능객체 if 조건문]
    • filtered_list = [x for x in my_list if x != 0]
    • list1 = [1, 2, 3]
      list2 = [4, 5, 6]
      product = [(x, y) for x in list1 for y in list2]

리스트 메소드

  • extends() = 리스트 추가(연장)
  • insert(i,x) = 인덱스 i 위치에 x를 삽입한다.
  • remove(x) = x 원소를 삭제한다. (여러 개 있을시 첫 번째 값 삭제)
  • pop(i) = 인덱스 i인 원소를 뽑는다.
  • clear() = 리스트를 비운다.
  • sort(key=None, reverse=False) = 리스트를 정렬한다. key는 정렬 기준, reverse는 역순 정렬 여부다.
  • reverse() = 리스트 뒤집기
  • copy() = 리스트 카피(얕은 복사)

리스트 슬라이싱

list[i:j] = 인덱스 i부터 j-1까지의 원소를 뽑는다. 주의하자, j-1까지 뽑는거다. range와 똑같이 생각하면 쉽다. i가 0이라면 생략 가능하다.

[1,2,3] -> 123

int(''.join(map(str,list))

입력

import sys
a = sys.stdin.readline().strip()

파이썬에서 input()은 속도가 느리기 때문에 알고리즘이 모두 맞는데도 시간초과가 뜬다면 입력 형식을 바꿔봐야 한다.

출력

리스트 원소만 출력하기

  • print(*numbers)
  • print(' '.join(numbers))

헷갈리는 행과 열

  • 리스트 컴프리헨션에서 첫번째 반복문은 이중반복문의 두 번째 반복문과 동치다.
  • 따라서 n*m 배열을 만들 때 리스트 컴프리헨션을 이용하려면 n을 바깥 반복문에, m을 안쪽 반복문에 넣어야한다.
# 둘은 동치다. 
visited = [[-1 for i in range(가로 개수)]for j in range(세로 개수)]

visited = []
for j in range(세로 개수):
	for i in range(가로 개수):
		visited[j][i] = -1 

파이썬 내장함수

all

all(row == [0]*N for row in a)
# 리스트의 요소들을 검사할 때 유용하다 

math

  • math.sqrt = 제곱근
  • from itertools import permutations
    • permutations(numbers, n) : n자리 조합
profile
좋아하는 걸로 밥 벌어먹기

0개의 댓글