board = []
count = 0
n = 5

for i in range(n) :           #리스트 입력
  board.append(list(map(int, input().split())))

def check(target, position):
  for pos in position:
    if pos is not None and target >= pos:
      return False
  return True

checked = []

for x in range(n) :
  for y in range(n) :
    [up, down, right, left] = [None]*4
    if x-1 >= 0:                  #위(up) 행 초과 X
      up = board[x-1][y]          #위
    if y+1 < n:                   #오른쪽(right) 열 초과X
      right = board[x][y+1]         #오른쪽      
    if y-1 >= 0:                  #왼쪽(left) 열 초과 X
      left = board[x][y-1]        #왼쪽
    if x+1 < n:                   #아래쪽(down) 행 초과 X
      down = board[x+1][y]        #아래

    num = board[x][y]
    if check(num, [up, right, down, left]):
      checked.append([x, y])
      
for item in checked:
  board[item[0]][item[1]] = "*"
for i in range(len(board)) :
  for j in range(len(board[i])) :
    print(str(board[i][j])+" ", end="")
  print("")

문제


5x5 2차원 배열이 주어질 때 어떤 원소가 상하좌우에 있는 원소보다 작을 때 해당 위치에 * 을 표시하는 프로그램을 작성하시오. 경계선에 있는 수는 상하좌우 중 존재하는 원소만을 비교한다.

 

입력


5x5 행렬의 정보가 25 개의 수로 주어진다. 각 수는 0 에서 9 사이 수이다.

 

출력


*를 포함한 행렬을 출력예의 형식으로 출력한다.

 

예제 입력

3 4 1 4 9
2 9 4 5 8
9 0 8 2 1
7 0 2 8 4
2 7 2 1 4

예제 출력

3 4 * 4 9 
* 9 4 5 8 
9 0 8 2 * 
7 0 2 8 4 
* 7 2 * 4 

 

풀이

 

[알고리즘랩스] 3. 완전탐색_offset(4방향 체크, 구현)