본문 바로가기

Python265

[Python] deque의 정의, 함수, 활용 정리 1) Deque 정의 Deque는 "double-ended que"의 약자로 스택과 큐를 일반화 한 것이다. List의 경우 고정 길이 연산에 특화되어 있으며, pop(0)과 insert(0, v) 연산에 대해 O(n)의 메모리 비용이 필요한 반면 Deque의 경우 추가(append)와 꺼내기(pop) 연산을 O(1)의 속도로 지원한다. 2) deque 함수들 3) deque 생성 from collections import deque #deque 선언 queue = deque(['this', 'is', 'deque']) print(queue) # deque(['this', 'is', 'deque']) 4) deque 활용하기 from collections import deque #deque 생성 d = .. 2023. 10. 5.
[Python] deque를 활용하여 리스트 회전하기 deque.rotate()를 사용해서 리스트 회전하기 >>> from collections import deque >>> test = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> test = deque(test) >>> test.rotate(2) >>> result = list(test) >>> result [8, 9, 1, 2, 3, 4, 5, 6, 7] 알고리즘을 풀다보면 리스트를 회전하는 문제에 많이 직면하게 된다. 이는 python collection 모듈의 deque 자료형을 사용하면 쉽게 처리할 수 있다. 리스트 자료형을 deque자료형으로 바꾼후 rotate()함수를 이용하면 된다. 함수안에 음수를 넣게 된다면 왼쪽 회전 양수는 오른쪽 회전이다. 2023. 10. 5.
[백준 20055번] 컨베이어 벨트 위의 로봇 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net n, k = map(int,input().split()) status = list(map(int,input().split())) data_top = [0]*n data_bottom = [0]*n status_top = status[:n] status_bottom = list(reversed(status[n:])) answer = 0 def count_zero(): # 내구성이 0인 칸의 개수를 구하는 함수 count = 0 for i in r.. 2023. 10. 5.
[백준 1697번] 숨바꼭질 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net from collections import deque n, k = map(int,input().split()) aera = [-1]*100001 visited = [-1]*100001 def getNextLocation(n): return [n-1,n+1,n*2] def bfs(): visited[n] = 0 queue = deque([n]) while queue: v = queue.popleft() if v == k: return v.. 2023. 10. 3.
[백준 4179번] 불! 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net from collections import deque r,c = map(int,input().split()) maze = [list(input()) for _ in range(r)] visited = [[-1]*c for _ in range(r)] dx = [-1,1,0,0] dy = [0,0,-1,1] fire_list = [] for i in range(r): for j in range(c): if maze[i][j] == "J": start.. 2023. 10. 3.
[백준 2178번] 미로 탐색 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net from collections import deque n,m = map(int,input().split()) maze = [list(map(int,list(input()))) for _ in range(n)] visited = [[-1]*m for _ in range(n)] dx = [-1,1,0,0] dy = [0,0,-1,1] def bfs(): visited[0][0] = 1 queue = deque([(0,0)]) while queue: cur_x,cur_y = queue.popleft.. 2023. 10. 3.