Skip to content

Commit aafdab7

Browse files
Merge pull request #645 from baekhangyeol/main
[백한결] 96차 라이브 코테 제출
2 parents b1838be + c7aca19 commit aafdab7

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed

live9/test96/문제1/백한결.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from collections import deque
2+
3+
4+
def solution(board):
5+
map = [list(row) for row in board]
6+
7+
G = (0, 0)
8+
R = (0, 0)
9+
10+
for i in range(len(map)):
11+
for j in range(len(map[0])):
12+
if map[i][j] == 'R':
13+
R = (i, j)
14+
elif map[i][j] == 'G':
15+
G = (i, j)
16+
17+
return bfs(map, G, R)
18+
19+
20+
def bfs(map, G, R):
21+
queue = deque([(R[0], R[1], 0)])
22+
23+
visited = [[False] * len(map[0]) for _ in range(len(map))]
24+
visited[R[0]][R[1]] = True
25+
26+
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
27+
28+
while queue:
29+
x, y, move = queue.popleft()
30+
31+
if (x, y) == G:
32+
return move
33+
34+
for dx, dy in directions:
35+
nx, ny = x, y
36+
while 0 <= nx + dx < len(map) and 0 <= ny + dy < len(map[0]) and map[nx + dx][ny + dy] != 'D':
37+
nx += dx
38+
ny += dy
39+
40+
if not visited[nx][ny]:
41+
visited[nx][ny] = True
42+
queue.append((nx, ny, move + 1))
43+
44+
return -1

live9/test96/문제2/백한결.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def solution(n):
2+
start, end = 1, 1
3+
current_sum = 1
4+
count = 0
5+
6+
while start <= n:
7+
if current_sum == n:
8+
count += 1
9+
current_sum -= start
10+
start += 1
11+
elif current_sum < n:
12+
end += 1
13+
current_sum += end
14+
else:
15+
current_sum -= start
16+
start += 1
17+
18+
return count

live9/test96/문제3/백한결.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
def solution(elements):
2+
prefix_sum = [0] * (len(elements) + 1)
3+
sums = set()
4+
5+
for i in range(len(elements)):
6+
prefix_sum[i + 1] = prefix_sum[i] + elements[i]
7+
8+
for length in range(1, len(elements) + 1):
9+
for start in range(len(elements)):
10+
end = (start + length) % len(elements)
11+
12+
# 일반적인 수열이므로 end까지의 합에서 start까지의 합을 뺌
13+
if start < end:
14+
part_sum = prefix_sum[end] - prefix_sum[start]
15+
# 원형 수열이므로 전체의 합에서 start까지의 합을 빼고 end까지를 더함
16+
else:
17+
part_sum = (prefix_sum[len(elements)] - prefix_sum[start]) + prefix_sum[end]
18+
sums.add(part_sum)
19+
20+
return len(sums)

0 commit comments

Comments
 (0)