BFS 3

[Python | 프로그래머스 | Lv_3] 수레 이동하기 (PCCP 기출문제)

😉 아이디어1. 2개의 수레에 대한 좌표 탐색 중첩 👉 이중 탐색 DFS or BFS2. 2개의 수레를 이동하는 중 수레의 위치가 서로 뒤바뀌는 경우와 두 개의 수레 도착 지점이 동일한 경우를 제외해야한다.3. 수레의 위치가 서로 뒤바뀌는 경우의 조건문 체크에 오류가 있었다. - 기존 : (n_bx, n_by) != red_start and (n_rx, n_ry) != blue_start - 수정 : not ((n_bx, n_by) == red_start and (n_rx, n_ry) == blue_start) - 두 개의 좌표 중 하나라도 원점 좌표와 일치하지 않으면, 참이 되어야 하지만(스위칭이 아니므로) 기존 조건식은 거짓 처리 중이었다...

알고리즘 2024.10.04

[Python | 프로그래머스 | Lv_3] 퍼즐 조각 채우기

😉 아이디어1. BFS 활용 매트릭스별 조각 탐색2. game_board 조각 기준 table 조각 대입 및 검증3. 검증된 조각의 경우 제거 👉 데이터 중복 방지😉 풀이from collections import dequedef solution(game_board, table): answer = 0 # 매트릭스 내 조각 탐색 board_pieces = find_pieces(game_board, 0) table_pieces = find_pieces(table, 1) for blank in reversed(board_pieces): for puzzle in reversed(table_pieces): i..

알고리즘 2024.09.14

[Python | 프로그래머스 | Lv_2] 미로 탈출

😁 아이디어1. BFS를 통해 최단거리를 찾는 방법을 2회에 걸쳐 진행한다.2. 시작점 -> 레버, 레버 -> 끝점3. 2회 동안 카운팅을 반환😁 코드from collections import dequedef solution(maps): answer = 0 arr = [] sPos = [] ePos = [] lPos = [] width = len(maps[0]) height = len(maps) for idx, m in enumerate(maps): lst = list(m) if 'S' in lst: sPos = [idx, lst.index('S')] if 'E' in lst: ..

알고리즘 2024.05.07