정수 배열 nums가 주어집니다. 당신은 처음에 배열의 첫 번째 인덱스(index 0)에 있으며, 배열의 각 원소는 해당 위치에서 최대로 점프할 수 있는 길이를 의미합니다.
마지막 인덱스까지 도달할 수 있으면 true를, 도달할 수 없으면 false를 반환하세요.
예시 1:
입력: nums = [2,3,1,1,4]
출력: true
설명: 인덱스 0에서 1로 1칸 점프한 뒤, 3칸 점프해서 마지막 인덱스에 도달합니다.
Plain Text
복사
예시 2:
입력: nums = [3,2,1,0,4]
출력: false
설명: 어떤 경우에도 인덱스 3에 도착하게 됩니다. 그 위치의 최대 점프 길이가 0이므로 마지막 인덱스에 도달할 수 없습니다.
Plain Text
복사
제약 조건:
•
1 <= nums.length <= 10^4
•
0 <= nums[i] <= 10^5
m x n 격자(grid)에 로봇이 있습니다. 로봇은 처음에 왼쪽 위 모서리(즉, grid[0][0])에 위치합니다. 로봇은 오른쪽 아래 모서리(즉, grid[m - 1][n - 1])로 이동하려고 합니다. 로봇은 언제나 아래 또는 오른쪽으로만 이동할 수 있습니다.
두 정수 m과 n이 주어졌을 때, 로봇이 오른쪽 아래 모서리에 도달할 수 있는 서로 다른 경로의 개수를 반환하세요.
테스트 케이스는 정답이 2 * 10^9 이하가 되도록 생성됩니다.
예시 1:
입력: m = 3, n = 7
출력: 28
Plain Text
복사
예시 2:
입력: m = 3, n = 2
출력: 3
설명: 왼쪽 위에서 오른쪽 아래까지 도달하는 방법은 총 3가지입니다.
1. 오른쪽 -> 아래 -> 아래
2. 아래 -> 아래 -> 오른쪽
3. 아래 -> 오른쪽 -> 아래
Plain Text
복사
제약 조건:
•
1 <= m, n <= 100
서로 다른 단위의 동전을 나타내는 정수 배열 coins와, 목표 금액을 나타내는 정수 amount가 주어집니다.
amount를 만들기 위해 필요한 최소 동전 개수를 반환하세요. 어떤 조합으로도 만들 수 없다면 -1을 반환하세요.
각 동전은 무한히 사용할 수 있다고 가정합니다.
예시 1:
Input: coins = [1,2,5], amount = 11
Output: 3
Explanation: 11 = 5 + 5 + 1
Plain Text
복사
예시 2:
Input: coins = [2], amount = 3
Output: -1
Plain Text
복사
예시 3:
Input: coins = [1], amount = 0
Output: 0
Plain Text
복사
제약 조건:
•
1 <= coins.length <= 12
•
1 <= coins[i] <= 2^31 - 1
•
0 <= amount <= 10^4
정수 배열 nums가 주어질 때, 엄격하게 증가하는 부분 수열(strictly increasing subsequence)의 최대 길이를 반환하세요.
예시 1:
입력: nums = [10,9,2,5,3,7,101,18]
출력: 4
설명: 가장 긴 증가하는 부분 수열은 [2,3,7,101]이므로 길이는 4입니다.
Plain Text
복사
예시 2:
입력: nums = [0,1,0,3,2,3]
출력: 4
Plain Text
복사
예시 3:
입력: nums = [7,7,7,7,7,7,7]
출력: 1
Plain Text
복사
제약 조건:
•
1 <= nums.length <= 2500
•
-10^4 <= nums[i] <= 10^4
추가 질문: O(n log(n)) 시간 복잡도로 동작하는 알고리즘을 생각해볼 수 있나요?

