[백준] 9184번 : 신나는함수실행
9184번: 신나는 함수 실행 해당문제는 메모리제이션 문제로 함수 return 끝에 이미 계산한 값을 저장하는 배열을 만들어서 저장한뒤 결과를 return 하면된다. import sys input = sys.stdin.readline dp = [[[-1 for _ in range(21)] for _ in range(21)] for _ in range(21)] def dfs(a, b, c): if a 20: return dfs(20, 20, 20) if dp[a][b][c] != -1: return dp[a][b][c] if a < b < c: dp[a][b][c] = dfs(a,b,c-1) + dfs(a, b-1, c-1) - dfs(a, b-1, c) return dp[a][b][c] cost = df..
[백준] 1062번 : 가르침
1062번: 가르침 해당 문제는 조합 문제로 해결 하였습니다. 알파벳의 모든 경우의 수를 구한뒤에, 알파벳으로 읽을 수 있는 단어를 계산합니다. 알파벳을 읽을 수 있는 learned 배열을 통하여 읽을 수 있는 알파벳을 표기하고 단어중에 learned 값이 모두 있다면 카운트를 증가시킵니다. from itertools import combinations N, K = map(int, input().split()) northword = list(['a','n','t','i','c']) alpabat = list(['b','d','e','f','g','h','j','k','l','m','o','p','q','r','s','u','v','w','x','y','z']) words = list() for _ in ..
[백준] 4485번 : 녹색 옷 입은 애가 젤다지?
4485번: 녹색 옷 입은 애가 젤다지? 해당문제는 BFS혹은 데이크스트라로 문제를 해결 할 수 있습니다. BFS는 N이 충분히 작고 가중치가 9이하 이기때문에 시간복잡도 안에 충분히 풀 수 있습니다. 하지만 N이 증가하고, 가중치가 증가한다면 BFS로는 시간복잡도내에 풀 수 없습니다. 해당 문제는 데이크스트라로 문제를 해결하였고, 우선순위 큐를 활용하여 최소 방문거리를 계산 하였습니다. 💡 파이썬의 format 함수 : {}, {} 에 변수를 넣을 수 있다. 또한 소수점 개수를 출력하는 format을 사용하고 싶을 경우 {:.2f} 를 하게되면 소수점 자리가 2개 까지 가능하다. move = ((0,1), (1,0), (0,-1), (-1,0)) import heapq cnt = 1 while True..