알고리즘 풀이/프로그래머스 2

[프로그래머스] 징검다리 건너리 - Python

문제 보기 [사용한 알고리즘] 이진 탐색(Binary Search) [문제 접근] left = 1, right = max(stones)로 초기화한 후 이진 탐색을 통해 최대 몇 명까지 징검다리를 건널 수 있는지 구하였습니다. mid 값((left + right) // 2) 보다 작은 구간이 연속적으로 k개 이상이면 건널 수 없으므로 mid = right - 1로 범위를 좁혀나갔습니다. 마찬가지로 mid 값보다 작은 구간이 연속적으로 k개 미만이면 건널 수 있으므로 left = mid + 1로 범위를 좁혀나갔습니다. [알고리즘] 1. left = 1, right = max(stones)로 초기화합니다. 2. 이진 탐색을 수행합니다. mid 값과 stones의 값을 비교해서 mid 값보다 작은 구간이 연속적..

[프로그래머스] 땅따먹기 - Python

문제 보기 [사용한 알고리즘] DP(동적 프로그래밍) [문제 접근] 현재 위치의 최고점은 현재 위치 - 1 행의 다른 열 중 최댓값과 현재 위치의 칸의 값을 합치면 됩니다. [알고리즘] 1. dp 배열 첫 행에 입력받은 land 첫 행 값을 대입합니다. 2. 1행부터 위에서 언급한 문제 접근 방식을 구현합니다. 3. 마지막행까지 2번 과정을 수행한 후 마지막행의 최고점을 출력합니다. [코드] def solution(land): dp = [[0] * 4 for _ in range(len(land))] for i in range(4): dp[0][i] = land[0][i] for i in range(1, len(land)): for j in range(4): if j == 0: dp[i][j] = land..