본문 바로가기

dfs35

[프로그래머스 PCCP 모의고사 2-4번] 수레 def solution(maze): answer = 0 n = len(maze) m = len(maze[0]) dx = [-1,1,0,0] dy = [0,0,-1,1] minimum = float("inf") is_success = False # 모든 수레가 각각의 도착 칸에 이동해야 함 # 각 턴 마다 모든 수레를 상하좌우로 인접한 칸 중에 하나로 이동 # 벽(5)이나 격자 판 밖으로 이동 X # 자신이 방문했던 칸으로 이동 X # 도착 칸에 위치한 수레는 더 이상 이동 X # 동시에 두 수레를 같은 칸에 위치 X # 수레끼리 자리를 바꿀 수 X for i in range(n): for j in range(m): if maze[i][j] == 1: red_start = (i,j) if maze[i][j.. 2023. 11. 18.
[프로그래머스 PCCP 모의고사 2-2번] 시추관 from collections import deque def solution(land): answer = 0 dx = [-1,1,0,0] dy = [0,0,-1,1] n = len(land) m = len(land[0]) visited = [[False]*m for _ in range(n)] total = [0]*m def bfs(x,y): if visited[x][y]: return visited[x][y] = True y_list = set() count = 0 queue = deque([(x,y)]) while queue: temp_x,temp_y = queue.popleft() count += 1 y_list.add(temp_y) for i in range(4): nx = temp_x + dx[i.. 2023. 11. 18.
[백준 12100번] 2048(Easy) - 구현 / 시뮬레이션 / 완전탐색 / 백트래킹 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net # 4x4 크기 보드 # 한번 이동할 때 보드 위에 있는 모든 블록이 상-하-좌-우 중 하나로 이동 # 같은 값을 갖는 두 블록이 충돌하면 합쳐짐 # 한번의 이동에서 합쳐진 블록은 다시 합쳐질 수 X import copy n = int(input()) zone = [list(map(int,input().split())) for _ in range(n)] max_value = -1 # 왼쪽으로 이동시키는 함수 def moveLeft():.. 2023. 10. 7.
[백준 1926번] 그림 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net from collections import deque n, m = map(int,input().split()) area = [list(map(int,input().split())) for _ in range(n)] visited = [[0]*m for _ in range(n)] count_list = [] dx = [-1,1,0,0] dy = [0,0,-1,1] def bfs(x,y): if visited[x][y] != 0 or area[x][y] != 1: ret.. 2023. 10. 3.
[프로그래머스 Lv.2] 타겟 넘버 재풀이 [프로그래머스 Lv.2] 타겟 넘버 # BFS from collections import deque def solution(numbers, target): answer = 0 queue = deque() queue.append((numbers[0],0)) queue.append((-numbers[0],0)) while queue: v, index = queue.popleft() index += 1 if index < len(numbers): queue.append((v+numbers[ind woohyun-king.tistory.com def solution(numbers, target): answer = 0 def dfs(depth,s): nonlocal answer if depth == len(numb.. 2023. 9. 28.
[백준 15683번] 감시 import copy n, m = map(int,input().split()) area = [list(map(int,input().split())) for _ in range(n)] # 0은 빈 칸, 6은 벽, 1~5는 CCTV def monitor_right(x,y,temp_area): total = 0 for i in range(y+1,m): if temp_area[x][i] == 6: break elif temp_area[x][i] == 0: temp_area[x][i] = -1 total += 1 return total, temp_area def monitor_left(x,y,temp_area): total = 0 for i in range(y-1,-1,-1): if temp_area[x][i] .. 2023. 8. 31.