공부/알고리즘

공부/알고리즘

9184 문제 신나는 함수 실행 python - [백준-실버2/재귀함수]

문제 내용 요약 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], ..

공부/알고리즘

1427문제 소트인사이드 python - [백준-실버5/정렬/리스트합치기]

문제 내용 요약 문제풀이 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

공부/알고리즘

N으로 표현 python - [프로그래머스/DP 알고리즘]

문제 내용 요약 아래와 같이 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 합니다. 문제 원리파악 해당 문제는 다른 사람풀이..

공부/알고리즘

다리를 지나는 트럭 python - [프로그래머스/스택/큐 알고리즘]

문제 내용 요약 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리에 올라갈 수 있는 트럭 수 bridge_length, 다리가 견딜 ..

공부/알고리즘

음료수 얼려 먹기 python - [이코테/DFS, BFS 알고리즘]

문제 내용 요약 DFS, BFS를 공부하던중 '동빈나'님의 자료를 보며 DFS, BFS를 공부했다.해당 문제에대한 해석에는 DFS를 통한 풀이방법만 제시해서 BFS로도 풀줄 알아야될거 같아서 BFS로 만들어 풀어봤다. 문제 원리파악 일단 이 문제에서 숫자 0끼리 묶여있는 그래프라고 생각하고, 연결이 되어있지 않은 총 그래프의 갯수를 생각한다. 위 그림에서는 총 3개의 그래프를 만들 수 있다. 위의 입력 맵을 예시로 [x,y]값을 [0,0]부터 [3,4]까지 순차탐색하면서 최초 0을 방문하면 연결된 그래프를 모두 1로 바꾸고, Count 1을 더하는 방식으로 진행한다. 만약 순차탐색을 하면서 grpah[x,y]값이 1일 경우 Pass하는 방식으로 코드를 진행하면 원하는 문제의 답이 나올 것이라고 생각한다...

1Seok
'공부/알고리즘' 카테고리의 글 목록