목록전체 글 (64)
정글에서 온 개발자
내 코드import heapqdef solution(word): D=[] def make(str1): if(str1!=''): heapq.heappush(D,str1) if(len(str1)==5): return for c in 'AEIOU': make(str1+c) make('') cnt=1 while(D[0]!=word): heapq.heappop(D) cnt+=1 return cnt재귀로 문자열을 만들었다.정렬을 해야하는데 O(NogN) 이 걸릴걸 우려해, 생성하면서 heap에 넣었다.heap에 넣는것도 O(logN)을 N 번 하므로 O(NlogN)이지만, 생성하면서..
내 코드 (입접 행렬)def solution(N, wires): T = [[False]*(N+1) for _ in range(N+1)] for u,v in wires: T[u][v] = True T[v][u] = True def dfs(V): visited=[False]*(N+1) visited[V]=True stk=[V] while stk: v = stk.pop() for i in range(1,N+1): if(T[v][i]==True and not visited[i]): visited[i]=True..
입력이 적고(8), 문제 자체가 대놓고 완전탐색이라고 써있기 때문에 딱히 그리디를 안 따지고 풀었지만, 좀 더 빠른 코드를 고민하면서 그리디를 생각해볼 수도 있다. 그리디로 풀 수 있을까?그리디의 두가지 조건최적 부분 구조 : 문제의 최종 해결책이 부분 문제의 최적 해로 구성되어야 한다.탐욕적 선택 속성 : 각 단계의 선택이 이후의 선택에 영향을 주지 않는다.최적 부분 구조적은 소모 피로도부터 들르기얼핏 생각하기에, 최대한 많이 들르려면 피로도가 적게 드는 것부터 가야 할 것 같다.반례: [[80,20],[50,40],[30,10]] K=802→0→1 순으로 들르려고 하면 0번째에 피로도가 모자라서 1개 밖에 못 들른다.많은 필요 피로도부터 들르기그렇다면 많은 피로도부터 들르면 괜찮을까?반례: [[80,..