학습
이번주는 모여서 각자 공부하고 있는 내용에 대해 공유하고 개개인의 지식을 덧붙혀 발전 가능성에 대해 모색하였다.
- 김찬호 : React clean code(?), Hyperledger-fabric 사용 방법, Prompt engineering
- 안상호 : Novelty detection, python
- 임현진 : python fetch, 자율주행자동차 시뮬레이팅 방법
- 심혜린 : React clean code(?), 트랜디한 UI UX란
팀플
이번주 금요일에는 캡스톤 디자인 발표가 예정되어 있다. 때문에 각자의 포지션에 맞추어 테스크를 진행하였다.
중간 보고서 작성 : 안상호, 임현진
중간 발표자료 작성 : 김찬호, 심혜린
이번주 코테 문제 (7569 / 토마토)
그래프 문제의 대명사 중 하나이다. 그래프 탐색을 통해 익은 토마토를 걸러내야 한다.
방법은 여러가지가 있겠지만, 나는 3차원 배열을 활용하여 풀 수 있었다. 다음 코드는 정답 코드이다.
import sys
from collections import deque
allow = [[0, -1, 0], [0, 0, 1], [0, 1, 0], [0, 0, -1], [1, 0, 0], [-1, 0, 0]]
n, m, h = map(int, sys.stdin.readline().split())
def bfs(q, graph, visit):
while q:
# for i in range(2):
# for j in range(3):
# print(graph[i][j])
# print('========', q)
k, i, j = q.popleft()
if visit[k][i][j] == False:
visit[k][i][j] = True
for a in range(6):
if 0 <= k + allow[a][0] < h and 0 <= i + allow[a][1] < m and 0 <= j + allow[a][2] < n and graph[k + allow[a][0]][i + allow[a][1]][j + allow[a][2]] == 0:
graph[k + allow[a][0]][i + allow[a][1]][j + allow[a][2]] = graph[k][i][j] + 1
q.append((k + allow[a][0], i + allow[a][1], j + allow[a][2]))
graph = [[] for _ in range(h)]
count = 0
i = 0
q = deque()
for _ in range(m * h):
tmp = list(map(int, sys.stdin.readline().split()))
if count == m:
count = 0
i+=1
graph[i].append(tmp)
for j in range(n):
if tmp[j] == 1:
q.append((i, len(graph[i])-1, j))
count += 1
visit = [[[False for _ in range(n)] for _ in range(m)] for _ in range(h)]
bfs(q, graph, visit)
maxVal = 0
for k in range(h):
for i in range(m):
for j in range(n):
if graph[k][i][j] == 0:
print(-1)
exit()
if maxVal <= graph[k][i][j]:
maxVal = graph[k][i][j]
if maxVal != 1:
print(maxVal - 1)
else:
print(0)