dfs로 풀면 시간초과가 뜬다. 이번 게임 맵 최단거리 문제 풀이의 알고리즘에서 가장 키포인트는 최단 거리 구하는 알고리즘을 선택하는 것입니다. 최단거리 구하기는 모든 지역을 깊이 있게 훑어봐야하는 깊이 우선 탐색(DFS)보다 현재 위치에서부터 가까운 위치를 탐색하면서 넓게 거리를 탐색하는 너비 우선 탐색(BFS) 알고리즘을 선택하는 것이 바람직합니다. #dfs 풀이 -> 시간초과 뜸 n= 0 m = 0 ans = -1 xs = [0, 1, 0, -1] # right, up, left, down ys = [1, 0, -1, 0] map = [] def solution(maps): global n,m global map map = maps n = len(maps) m = len(maps[0]) visite..
코테
N = 0 ans = 0 def solution(numbers, target): global N N = len(numbers) dfs(numbers, target, 0) return ans def dfs(numbers, target, idx ,nums =[]): global N global ans if len(nums) == N: if sum(nums) == target: ans+=1 return nums.append(numbers[idx]) dfs(numbers, target, idx+1, nums) nums.pop() nums.append(numbers[idx] *(-1)) dfs(numbers, target, idx+1, nums) nums.pop()
def solution(word): answer = 0 one = 1 + 5 + 5**2 + 5**3 + 5**4 two = 1 + 5 + 5**2 + 5**3 three = 1 + 5 + 5**2 four = 1 + 5 cal = [ one, two, three, four, 1] lst = list(word) alpha = {'A':0, 'E':1, 'I':2, 'O':3, 'U': 4} for i in range(0, len(lst)): if lst[i] == 'A': answer += 1 else: answer += cal[i] * alpha[lst[i]] + 1 return answer
ans = 0 def solution(k, dungeons): v =[] dfs(dungeons,v, k ) return ans def dfs(dungeons, visited, cur): global ans if ans < len(visited): ans = len(visited) for i in range(0, len(dungeons)): if i not in visited and dungeons[i][0]
ans = 0 def solution(k, dungeons): v =[] dfs(dungeons,v, k ) return ans def dfs(dungeons, visited, cur): if check(dungeons, visited, cur) == False: global ans if ans < len(visited): ans = len(visited) return for i in range(0, len(dungeons)): if i not in visited and dungeons[i][0]
def solution(brown, yellow): for i in range(1, int(yellow ** (1/2))+1): if yellow % i == 0: a = i #세로 b = yellow // i #가로 if brown == (a * 2 + (b + 2) * 2): return [b+2,a+2]
아이디어: numbers 배열에서 만들 수 있는 모든 정수를 구한 후 소수인지 판별(dfs) -> 소수라면 temp에 저장 import math temp = [] def solution(numbers): iniarr = list(map(int, numbers)) for i in range(1, len(iniarr)+1): dfs(i, iniarr) print(temp) answer = len(temp) return answer def dfs(m, numbers, arr =[], visited = []): if len(arr) == m : num = 0 for j in range(0, m): num += 10 ** (m-j-1) * arr[j] if num not in temp and isPrime(num..
def solution(answers): one = [1, 2, 3, 4, 5] two = [ 2, 1, 2, 3, 2, 4, 2, 5] three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] scores = [0,0,0] lengths = [5,8,10] anslen = len(answers) answer = [] for i in range(0, len(answers)): if one[i % lengths[0]] == answers[i]: scores[0] += 1 if two[i % lengths[1]] == answers[i]: scores[1] += 1 if three[i % lengths[2]] == answers[i]: scores[2] += 1 m = max(scores) fo..