본문 바로가기
알고리즘

(코드업) 6098 성실한 개미 - 파이썬

by korea_musk 2022. 1. 20.

코드업 기초예제 마지막 문제이다.

앞의 문제들과 동일하게 배열을 이용하여 입력을 받아내야한다.

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()

 

개미의 이동 경로의 경우의 수를 따져주면서 코드를 작성해주어야 한다.

댓글