Skip to content

Commit 8f3e23a

Browse files
Merge pull request #1924 from CodingTestStudy2/김민제
[김민제] Day29
2 parents b05326b + 0488f2a commit 8f3e23a

3 files changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def canReach(self, start: list[int], target: list[int]) -> bool:
3+
start_parity = (start[0]+start[1])%2
4+
target_paritiy = (target[0]+target[1])%2
5+
6+
if start_parity == target_paritiy:
7+
return True
8+
else:
9+
return False
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import sys
2+
3+
class Solution:
4+
def nearestDrone(self, drones: list[list[int]], target: list[int]) -> int:
5+
answer = sys.maxsize
6+
answer_arr = []
7+
answer_i = []
8+
for i,num in enumerate(drones):
9+
temp = abs(num[0]-target[0])+abs(num[1]-target[1])
10+
if temp <= num[2]:
11+
answer = min(answer,temp)
12+
answer_arr.append(answer)
13+
answer_i.append(i)
14+
if not answer_i:
15+
return -1
16+
else:
17+
return answer_i[answer_arr.index(min(answer_arr))]
18+
19+
20+
drones = [[4,4,5]]
21+
target = [8,6]
22+
23+
#drones = [[2,1,5],[4,4,5],[6,6,8]]
24+
#target = [5,5]
25+
26+
solution = Solution()
27+
print(solution.nearestDrone(drones,target))
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
def sumSubarrayMins(self, arr: list[int]) -> int:
3+
MOD = 10**9 + 7
4+
n = len(arr)
5+
6+
left = [0] * n
7+
right = [0] * n
8+
9+
stack = []
10+
11+
# 왼쪽에서 나보다 작은 값까지의 거리
12+
for i in range(n):
13+
while stack and arr[stack[-1]] > arr[i]:
14+
stack.pop()
15+
16+
left[i] = i - stack[-1] if stack else i + 1
17+
stack.append(i)
18+
19+
stack = []
20+
21+
# 오른쪽에서 나보다 작거나 같은 값까지의 거리
22+
for i in range(n - 1, -1, -1):
23+
while stack and arr[stack[-1]] >= arr[i]:
24+
stack.pop()
25+
26+
right[i] = stack[-1] - i if stack else n - i
27+
stack.append(i)
28+
29+
return sum(arr[i] * left[i] * right[i] for i in range(n)) % MOD

0 commit comments

Comments
 (0)