본문 바로가기

프로그래머스

프로그래머스 위클리 챌린지 - 9주차 [그래프] from collections import defaultdict def TreeSize(start, excep, linkInfo, n): q = list(filter(lambda x: x != excep , linkInfo[start])) visited = [True if i in q else False for i in range(n+1)] visited[start] = True cnt = len(q) + 1 while q: nextVal = q.pop() for i in linkInfo[nextVal]: if not visited[i]: q.append(i) visited[i] = True cnt += 1 return cnt def solution(n, wires): linkInfo = defaultd.. 더보기
카카오 2019 기출 - 실패율 def solution(N, stages): failRate = [] for i in range(1, N+1): cnt, rate = 0, 0 for j in stages: if j >= i: cnt += 1 if j == i: rate += 1 if cnt: failRate.append([i, rate / cnt]) else: failRate.append([i, 0]) #실패율 내림차순 정렬, 실패율 같으면 스테이지 번호로 오름차순 정렬 failRate = sorted(failRate, key = lambda x : (-x[1], x[0])) return list(map(lambda x : x[0],failRate)) cnt : 현재 스테이지에 도달한 플레이어 수 rate : 현재 스테이지에 머물러 있.. 더보기
프로그래머스 여행경로 - 백트래킹 def dfs(ans, routes, pointNum, answer, isFinished): if len(ans) == pointNum: if not isFinished[0]: for i in ans: answer.append(i) isFinished[0] = True return nexts = isPossible(ans[-1], routes) for next in nexts: if not isFinished[0]: next[1] = True ans.append(next[0]) dfs(ans, routes, pointNum, answer, isFinished) # 티켓 사용여부 False로 돌려놓음 next[1] = False ans.pop() def isPossible(start, routes): re.. 더보기