해결된 질문
작성
·
83
0
안녕하세요! 청소 관련 문제에서 아래처럼 했는데 무한루프에 빠집니다.. 어디가 잘못된건지 모르겠어서 질문드려요!
감사합니다!
def get_count_of_departments_cleaned_by_robot_vacuum(r, c, d, room_map):
r_real = r
c_real = c
dr = [-1,0,1,0]
dc = [0,1,0,-1]
d_real = d
count = 1
room_map[r][c] = 2
while True :
stop = 0
while stop < 4:
for i in range(4):
d_real = (d_real+3)%4
r_fake = r_real + dr[d_real]
c_fake = c_real + dc[d_real]
if room_map[r_fake][c_fake] == 0 :
count +=1
r_real = r_fake
c_real = c_fake
room_map[r_fake][c_fake] = 2
stop = 0
break
else:
stop += 1
d_real = (d_real+6)%4
r_real = r_real + dr[d_real]
c_real = c_real + dc[d_real]
if room_map[r_real][c_real] == 1:
break
return count
답변 1
0
안녕하세요 sonapple3 님 좋은 질문해주셔서 감사합니다!
해당 코드 중간에 stop 을 출력하도록 해보니, stop 이 항상 0이 되는 것 같습니다.
코드를 봤을 때는 아마 아래 코드의 break 문에 의해 for 문을 나가게 되면, 다시 for 문을 무한으로 호출하는 구조로 되어있어서 이와 같이 동작하는 것으로 보입니다!
if room_map[r_fake][c_fake] == 0:
count += 1
r_real = r_fake
c_real = c_fake
room_map[r_fake][c_fake] = 2
stop = 0
break
한 번 디버그 모드 혹은 print 문을 이용해서 어떤 부분을 고쳐야 하는지 찾아가 보시는 걸 추천드립니다!
새로운 코드로 풀이해보시는 모습이 너무 보기 좋습니다!! 또 질문 달아주세요 ㅎ.ㅎ