mm333mm   3년 전

bfs로 풀었습니다!

어떻게 하면 시간을 더 줄일 수 있을까요???

wider93   3년 전

지금 풀이는 꽤 정석적이기 때문에, 굳이 개선에 시간을 투자하시지 않으셔도 좋을 것 같습니다.

그럼에도 개선이 필요하다면 다음과 같은 것들을 해보세요.

1. 전체를 함수 안에 넣는다.(놀랍게도 잔역변수 참조가 지역변수 참조보다 느려서 이게 큰 효과가 있는 코드가 많습니다.)

2.인덱싱을 줄입니다.

22번 줄의 포문을 for u,v,w in zip(dx, dy, dz) 등으로 바꿀 수 있습니다. 아니면 아예 전용 generator를 만들어서 위의 코드보다 못생기지만 빠른  if문을 안에 넣어주면 더 효율적으로 작동할 수 있겠네요.

한 가지 더 쥐어짜내라면 BFS는 이런 식으로도 짤 수 있습니다. bfs가 항상 작은 거리의 점부터 방문함을 이용하는 풀이입니다:

dist = 0

while q:{

dist += 1

for _ in range(len(q)): {

...tomato[k][x][y]=dist

}

mm333mm   3년 전

와 자세한 설명 감사합니다 ㅠㅠㅠ 참고해서 해결했습니다!! 

댓글을 작성하려면 로그인해야 합니다.