[Programmers] #42898 - 등굣길 [Java][C++][Python]
문제 링크 1. 아이디어 $(1, 1)$에서 $(n, m)$까지 오른쪽 또는 아래쪽으로만 이동하는 최단경로의 경우의 수를 구하는 전형적인 격자 DP 문제다. dp[i][j]를 $(i, j)$ 지점까지 도달하는 경로의 수로 정의하면, 오른쪽·아래쪽으로만 움직일 수 있으니 $(i, j)$에 도달하는 모든 경로는 반드시 바로 위 칸 $(i - 1,...
문제 링크 1. 아이디어 $(1, 1)$에서 $(n, m)$까지 오른쪽 또는 아래쪽으로만 이동하는 최단경로의 경우의 수를 구하는 전형적인 격자 DP 문제다. dp[i][j]를 $(i, j)$ 지점까지 도달하는 경로의 수로 정의하면, 오른쪽·아래쪽으로만 움직일 수 있으니 $(i, j)$에 도달하는 모든 경로는 반드시 바로 위 칸 $(i - 1,...
문제 링크 1. 아이디어 동그랗게 배치된 집들에 대해 인접한 두 집을 연속으로 털 수 없을 때 도둑이 훔칠 수 있는 돈의 최댓값을 구해야 하는 문제다. 주어진 집들이 원형이 아니라 일렬로 이어져 있다고 하면, dp[i]를 첫 집부터 $i$번째 집까지만 고려했을 때 훔칠 수 있는 돈의 최댓값으로 정의할 수 있다. $i$번째 집 money[i ...
문제 링크 1. 아이디어 두 문자열 str1과 str2의 길이가 같으므로, 인덱스를 0부터 하나씩 늘려가며 두 문자열에서 같은 위치의 문자를 번갈아 결과 문자열에 이어 붙이면 된다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ ...
문제 링크 1. 아이디어 배열 arr에 담긴 문자들을 순서대로 이어 붙인 문자열을 반환하면 되는 간단한 문제다. 2. 복잡도 접근 시간 공간 풀이 $O(N)$ $O(N)$ ($N$ = arr의 길이) 3....
문제 링크 1. 아이디어 문자열 my_string을 k번 반복해서 이어붙인 문자열을 반환하면 되는 간단한 문제다. 2. 복잡도 접근 시간 공간 풀이 $O(N \times K)$ $O(N \times K)$ ($...
문제 링크 1. 아이디어 양의 정수 a, b가 주어졌을 때, $a \oplus b$와 $b \oplus a$ 중에서 더 큰 값을 반환하는 문제다. 연산 $\oplus$는 두 수를 문자열로 변환해서 문자열 이어붙이기를 한 후 다시 정수로 형변환을 하면 간단하게 처리할 수 있으므로 이를 이용해 두 연산 결과 중 더 큰 값을 반환했다. 2. ...
문제 링크 1. 아이디어 양의 정수 a, b가 주어졌을 때, $a \oplus b$와 $2 \times a \times b$ 중에서 더 큰 값을 반환하는 문제다. $a \oplus b$는 두 수를 문자열로 변환해서 문자열 이어붙이기를 한 후 다시 정수로 형변환을 하면 간단하게 처리할 수 있으므로 이를 이용해 두 연산 결과 중 더 큰 값을 반환...
문제 링크 1. 아이디어 정수 n이 주어질 때, n 이하의 홀수를 오름차순으로 모아 배열로 반환하면 되는 문제다. 1부터 시작해 2씩 증가시키며 n을 넘지 않을 때까지 순회하면 조건을 만족하는 값만 오름차순으로 얻어진다. 2. 복잡도 접근 시간 공간 ...
문제 링크 1. 아이디어 정수 배열 array가 주어질 때 최빈값을 찾되, 최빈값이 여러 개면 -1을 반환하면 되는 문제다. array의 원소가 0 이상 1000 미만으로 제한되므로, 값별 등장 횟수를 크기 1000짜리 배열(또는 해시맵)에 세어두고 가장 큰 카운트를 가진 값을 찾으면 된다. 이때 최댓값 카운트를 가진 값이 둘 이상이면 -1을...
문제 링크 1. 아이디어 정수 배열 array를 크기 순으로 정렬했을 때, 정중앙에 위치하는 값(중앙값)을 구하면 되는 문제다. array의 길이는 항상 홀수이므로, 오름차순 정렬 후 중간 위치의 인덱스에 위치한 값이 바로 중앙값이다. 2. 복잡도 접근 시간 공간 ...