반응형
문제 설명
개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
(오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)
미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
미로 상자의 테두리는 모두 벽으로 되어 있으며, 개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.
코드
d = []
for i in range(10):
d.append([])
in_to = input().split()
for j in in_to:
d[i].append(int(j))
x, y = 1, 1
flag = True
while flag :
if d[x][y] == 2:
d[x][y] = 9
flag = False
elif (d[x][y+1]) == 1 :
if (d[x+1][y]) == 1:
d[x][y] = 9
flag = False
else :
d[x][y] = 9
x += 1
else :
d[x][y] = 9
y += 1
for i in d :
print(' '.join(map(str, i)))
2~6번째 줄 : 변수 in_to에 한 행씩 입력받아 d[i....]안에 있는 리스트에 값을 넣어준다.
d[x][y] 2중 리스트로 먹이 인 2의 값을 찾으며, 지나간 길은 d[x][y]=9로 해준다. 오른쪽 벽이 1인 경우 갈 수 없어 아래로 이동해야한다. 또한 아래의 길도 1일 수도 있으니 2중 if 문을 사용하여 확인하고 flag=False 값을 준다.
x+=1 (가로 이동 )/ y+=1(세로 이동) 을 통해 좌표 이동을 한다.
반응형
'Algorithm' 카테고리의 다른 글
[python] 소인수분해, 최소 공배수 구하기 (0) | 2022.01.18 |
---|---|
[python] 반복문과 재귀 호출을 사용하여 두 수의 최대 공약수 구하기 (0) | 2022.01.18 |
[python] 파이썬을 이용해 소수 추출하기 / 에라토스테네스의 체 방법으로 추출하기 (0) | 2022.01.18 |
[python] 파이썬을 이용해 정수의 약수와 소수 구하기 (0) | 2022.01.18 |
[code up] 파이썬 6097 설탕과자 뽑기 (0) | 2022.01.16 |