본문 바로가기

전체 글74

미로 탈출 문제이해스타트출발->레버당기고->출구로 나가기위한 최소시간구하기(한칸1초) 못나가면 -1통로로만이동가능하며 통로는 O 벽은 X 로 표현됨참고def bfs(i,j):     while queue:         i,j = queue.pop(0)         if i == N-1 and j == M-1:             return visited[i][j]         for d in range(4):             ni = i + di[d]             nj = j + dj[d]             if 0                queue.append((ni,nj))                 visited[ni][nj] = visited[i][j] + 1 di = [-1.. 2024. 5. 31.
다단계 칫솔 판매 문제이해enroll에 적힌사원들과 각위치의 사원들을 데리고온사람 , 즉 수익의 10%를 주어야하는사람이 referral에 있고 seller에 판사람의 개수를 amount에서 보여줄때enroll의 위치한 사람순서대로 수익 출력  def solution(enroll, referral, seller, amount): dic = {} # 부모자식계 키가 자식이고 값이 부모인 result = [] for i in range(len(enroll)): dic[enroll[i]] = referral[i] money = {} for i in enroll: money[i] = 0 for i in range(len(seller)): # 수익분배 .. 2024. 5. 30.
예상 대진표 문제이해N명의 참가자가 있고 A,B참가자의 번호가 있다 경기는 토너먼트로 진행되고 1,2 3,4...이런식으로 붙을때 A,B가 몇번째 라운드에서 만나게 될지구하기 (만나기 전까지 모든라운드에서 승리가정) 두명씩 경기를 할때 오른쪽에있는 사람이 N 번일때 기준으로 그라운드에서 올라가는 사람의 번호는 N//2 가 되므로 왼쪽 오른쪽 통일하려면 (그사람번호+1) // 2def solution(n,a,b): answer = 0 while a!=b: a = (a+1)//2 b = (b+1)//2 answer += 1 return answern = 8a = 4b = 7print(solution(n,a,b)) 2024. 5. 30.
메뉴 리뉴얼 문제이해orders배열에 각테이블이 시킨 2개이상의 음식들이 문자열형태로 나오고 course에 몇가지 음식으로 만들것인지 배열이 나옴2~10 이하의 수로2가지가 가장 많이 나온 조합 ,3가지가 가많이 나온조합 ...여러개면 여러개모두result 출력 1. course 에 있는 수만큼 조합을 만들어서 가장 많이 나온 조합 찾기( combinations) 내장함수 사용from itertools import combinationsmenu = "abcd"for i in combinations(menu,2): print(i) # ('a', 'b')('a', 'c')('a', 'd')('b', 'c')('b', 'd')('c', 'd') from itertools import combinationsdef.. 2024. 5. 28.