# 6098 -- 성실한 개미 미로찾기
# 0(갈 수 있는 곳), 1(벽 또는 장애물), 2(먹이)
# 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직
# 단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
# 더이상 이동하지 않고 그 곳에 머무른다.
# 개미는 (2, 2)에서 출발
# 10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다.
# 개미가 이동한 경로를 9로 표시해 출력
miro = [list(map(int, input().split())) for _ in range(10)]
x, y = 1, 1
miro[x][y] = 9
while True:
# 먹이를 찾으면 가만히 있는다.
if miro[x][y] == 2:
miro[x][y] = 9
break
# 오른쪽이 0이면 오른쪽으로 간다.
elif miro[x][y + 1] == 0:
y += 1
miro[x][y] = 9
# 오른쪽이 2이면 오른쪽으로 가서 끝낸다.
elif miro[x][y + 1] == 2:
y += 1
miro[x][y] = 9
break
# 오른쪽이 1인데, 아래가 0이면 아래로 간다.
elif miro[x+1][y] == 0:
x += 1
miro[x][y] = 9
# 오른쪽이 1인데, 아래가 2이면 아래로 가서 끝낸다.
elif miro[x + 1][y] == 2:
x += 1
miro[x][y] = 9
break
else:
break
for row in miro:
print(' '.join(map(str, row)))
냅다 이중 for문 만들어놓고 어떻게 해야하나 하고 고민하다가
GPT한테 문제 알려주니까 while 문 알려줘서
아차차~! 하고 안 본 척 못 본 척
조건 생각해서 해봤는데 마지막 2를 못잡길래
하나하나.. 천천히.. 반복문 돌려보면서 못찾은 조건 찾아냄...
그리고 깔쌈하게 한 번에 통과했는데
while True:
# Check for food (2), stop if found
if miro[x][y] == 2:
miro[x][y] = 9
break
# Move right if possible
if miro[x][y+1] != 1:
y += 1
# Otherwise, move down if possible
elif miro[x+1][y] != 1:
x += 1
else: # If stuck, stop
break
# Mark the new position
miro[x][y] = 9
GPT 가 더 깔쌈하게 코드 요약한거 보고 이마를 탁 쳐부렸네...
그치 어쩐지 똑같은 코드가 반복됐어
그러면 줄여야하는게 인지상정인데
그냥 풀린게 기뻐서 냅다 제출했네
하 이렇게 기본기 부족한 상태에서 알고리즘 책 들어갈 수 없어...
거기서도 파이썬 처음이면 200제는 풀어보라고 했으니까
이제 막 100제 풀었으니까
프로그래머스에서 기초문제 100개 더 풀어봐야겠다