[프로그래머스] Lv2 - 빛의 경로 사이클 (파이썬)
https://programmers.co.kr/learn/courses/30/lessons/86052 코딩테스트 연습 - 빛의 경로 사이클 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진 programmers.co.kr dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] def solution(grid): global answer, visited global N, M answer = [] N = len(grid) M = len(grid[0]) visited = [[[False]*4 for _ in range(M)] for _ in r..
2022. 4. 3.
[프로그래머스] 고득점Kit (8) - DFS/BFS (파이썬)
1. 타겟 넘버 (Lv. 2) # 타겟 넘버 def solution(numbers, target): answer = 0 def dfs(target, k, result): nonlocal answer if k == len(numbers): if target == result: answer += 1 return else: dfs(target, k+1, result+numbers[k]) dfs(target, k+1, result-numbers[k]) dfs(target, 0, 0) return answer 재귀 함수를 이용한 dfs로 풀었다. k == len(numbers) 일 경우, target과 같은지 확인 return answer 2. 네트워크 (Lv. 3) # 네트워크 from collections i..
2022. 3. 11.
[백준] 17472번 - 다리 만들기 2 (파이썬)
# 다리 만들기 2 from collections import deque import sys input = sys.stdin.readline MAX = sys.maxsize dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] N, M = map(int, input().split()) land = [] arr = [] for i in range(N): arr.append(list(map(int, input().split()))) for j in range(M): if arr[i][j] == 1: land.append((i, j)) def find_land(visited, a, b, num): q = deque() q.append((a, b)) while q: x, y = q.popleft(..
2022. 2. 19.