문제 내용 요약 if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) 위의 함수를 구현하는 것은 매우 쉽다. 하지만, 그대로 구현하면 값을 구하는데 매우 오랜 시간이 걸린다. (예를 들면, a=15, b=15, c=15) a, b, c가 주어졌을 때, w(a, b, c)를 출력하는 프로그램을 작성하시오. 문제 원리파악 다이나믹 프로그래밍을 풀때 Top Down..
eval 문자열을 식으로 입력하면 해당 결과값 반환 a = eval("100 + 32") 132 출력 a = eval("Block + blog") Blockblog 출력 Join 리스트의 값을 연결하여 문자열로 출력할 때 a = ['a','b','c','d'] ''.join(a) 출력 : abcd '_'.join(a) 출력 : a_b_c_d Lambda 리스트의 값을 연결하여 문자열로 출력할 때 val_lsit = [ [3, 3], [1, 1], [2, 2],[1, -1], [3, 4]] val_list = sorted(val_list, key = lambda x: [x[1], x[0]]) x[1]을 기준으로 먼저 정렬하고, x[0]에 대해서 정렬 출력 : [[1, -1], [1, 1], [2, 2], ..
문제 내용 요약 문제풀이 a = input() val_list = [] for i in range(len(a)): val_list.append(a[i]) print(''.join(sorted(val_list, reverse = True))) join함수에 대해서 향후 활용하면 좋을것 같아 정리함 리스트를 문자열로 표현하는 방법 a = ['1','2','3','4','5'] ''.join(a) 결과 : 12345 '_'.join(a) 결과 : 1_2_3_4_5
문제 내용 요약 아래와 같이 5와 사칙연산만으로 12를 표현할 수 있습니다. 12 = 5 + 5 + (5 / 5) + (5 / 5) 12 = 55 / 5 + 5 / 5 12 = (55 + 5) / 5 5를 사용한 횟수는 각각 6,5,4 입니다. 그리고 이중 가장 작은 경우는 4입니다. 이처럼 숫자 N과 number가 주어질 때, N과 사칙연산만 사용해서 표현 할 수 있는 방법 중 N 사용횟수의 최솟값을 return 하도록 solution 함수를 작성하세요. 제한사항 N은 1 이상 9 이하입니다. number는 1 이상 32,000 이하입니다. 수식에는 괄호와 사칙연산만 가능하며 나누기 연산에서 나머지는 무시합니다. 최솟값이 8보다 크면 -1을 return 합니다. 문제 원리파악 해당 문제는 다른 사람풀이..
문제 내용 요약 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 ..
문제 내용 요약 DFS, BFS를 공부하던중 '동빈나'님의 자료를 보며 DFS, BFS를 공부했다.해당 문제에대한 해석에는 DFS를 통한 풀이방법만 제시해서 BFS로도 풀줄 알아야될거 같아서 BFS로 만들어 풀어봤다. 문제 원리파악 일단 이 문제에서 숫자 0끼리 묶여있는 그래프라고 생각하고, 연결이 되어있지 않은 총 그래프의 갯수를 생각한다. 위 그림에서는 총 3개의 그래프를 만들 수 있다. 위의 입력 맵을 예시로 [x,y]값을 [0,0]부터 [3,4]까지 순차탐색하면서 최초 0을 방문하면 연결된 그래프를 모두 1로 바꾸고, Count 1을 더하는 방식으로 진행한다. 만약 순차탐색을 하면서 grpah[x,y]값이 1일 경우 Pass하는 방식으로 코드를 진행하면 원하는 문제의 답이 나올 것이라고 생각한다...