코드업 기초예제 마지막 문제이다.
앞의 문제들과 동일하게 배열을 이용하여 입력을 받아내야한다.
1. 0으로 초기화한 10 X 10 배열을 만들어낸다.
array = [[0 for i in range(10)]for j in range(10)]
for i in range(10):
for j in range(10):
array[i][j] = 0
리스트 컴프리헨션 아니면 이중 for문을 이용하여 초기화한다.
2. input 으로 입력 받는다.
for i in range(10):
array[i] = list(map(int, input().split()) # 공백 기준으로 나누고 리스트로 저장
# 리스트로 받아야 정답으로 출력된다.
for i in range(10):
a = input().split()
for j in range(10):
array[i][j] = int(a[j])
map 을 사용하면 짦고 깔끔하게 나옵니다.
3. 시작 위치인 2, 2을 고정한다.
리스트에서는 0,0 부터 시작 따라서 x, y 를 1, 1로 시작
4. 개미가 움직이는 방향을 코드로 작성한다.
개미는 항상 오른쪽과 아래쪽으로 이동한다.
파이썬에서는 일반적인 수학과 다르게 오른쪽 방향이 y축, 아래쪽 방향이 x 축이다.
개미가 오른쪽으로 움직이면 y값이 증가, 아래쪽이면 x값이 증가다.
while True:
if array[x][y + 1] == 0: # 개미의 오른쪽 방향이 0 일때(이동가능)
array[x][y] = 9 # 현재 위치를 9로 바꾼다.
y += 1 # 오른쪽으로 이동
elif array[x][y + 1] == 1: # 개미의 오른쪽 방향이 1일때(이동불가능)
array[x][y] = 9 # 현재 위치만 9로
if array[x + 1][y] == 1: # 오른쪽이 1일때 아래쪽이 1이면 (이동 가능 방향 없음)
break # while문 탈출
elif array[x + 1][y] == 2: # 오른쪽 1일때 아래쪽이 2이면 (도착)
array[x + 1][y] = 9 # 아래쪽 방향을 9로 바꾸고 반복문 탈출
break
else:
x += 1 # 오른쪽이 1일때 아래쪽이 0이면 아래쪽으로 이동
else:
array[x][y] = 9 # 개미의 오른쪽 방향이 2 (도착지점일때)
array[x][y + 1] = 9 # 현재 위치와 오른쪽 방향을 9로 바꾸고 반복문 탈출
break
문제에 제시된 개미의 이동방향과 이동할 수 없을 때를 모두 작성해준다.
5. 정답을 출력한다.
for i in range(10):
for j in range(10):
print(array[i][j], end=' ') # end=' ' 한칸씩 띄우고 출력
print() # 줄바꿈
코드 (제시된 정답과는 다름)
array = [[0 for i in range(10)]for j in range(10)]
for i in range(10):
array[i] = list(map(int, input().split())) # 공백 기준으로 나누고 리스트로 저장
x, y = 1, 1
x = int(x)
y = int(y)
while True:
if array[x][y + 1] == 0: # 개미의 오른쪽 방향이 0 일때(이동가능)
array[x][y] = 9 # 현재 위치를 9로 바꾼다.
y += 1 # 오른쪽으로 이동
elif array[x][y + 1] == 1: # 개미의 오른쪽 방향이 1일때(이동불가능)
array[x][y] = 9 # 현재 위치만 9로
if array[x + 1][y] == 1: # 오른쪽이 1일때 아래쪽이 1이면 (이동 가능 방향 없음)
break # while문 탈출
elif array[x + 1][y] == 2: # 오른쪽 1일때 아래쪽이 2이면 (도착)
array[x + 1][y] = 9 # 아래쪽 방향을 9로 바꾸고 반복문 탈출
break
else:
x += 1 # 오른쪽이 1일때 아래쪽이 0이면 아래쪽으로 이동
else:
array[x][y] = 9 # 개미의 오른쪽 방향이 2 (도착지점일때)
array[x][y + 1] = 9 # 현재 위치와 오른쪽 방향을 9로 바꾸고 반복문 탈출
break
for i in range(10):
for j in range(10):
print(array[i][j], end=' ')
print()
개미의 이동 경로의 경우의 수를 따져주면서 코드를 작성해주어야 한다.
'알고리즘' 카테고리의 다른 글
백준 9095번 다이나믹 프로그래밍 -python (0) | 2022.11.01 |
---|---|
다이나믹 프로그래밍(동적 계획법) ex)백준 2839번 -python (0) | 2022.10.28 |
파이썬 스택 자료구조 (0) | 2021.02.10 |
구현 유형 알고리즘 정리 (0) | 2021.01.23 |
그리디 알고리즘 정리 (0) | 2021.01.22 |
댓글