[알고리즘] 시뮬레이션

SangJin Ham·2023년 6월 27일
0

알고리즘

목록 보기
1/9
post-thumbnail

코딩테스트 역량 강화 교육(거점형 특화 프로그램)이라는 프로그램에 참여해 공부한 내용입니다.


시뮬레이션 알고리즘

  • 작은 의미로는 문제가 제시한 규칙에 따라 개체를 이동시키는 알고리즘을 말하며,
    큰 의미로는 문제가 요구하는 대로 시행되도록 코드를 구현하는 알고리즘

4방향 탐색 방법

  • 방향 배열을 만들어 네 방향을 탐색하는 방법

만약 이런 board가 있다면

# 방향배열
# 시계방향으로 상우하좌 순
dr = [-1, 0, 1, 0]
dc = [0, 1, 0, -1]
  • 방향 배열을 이용한 상하좌우의 좌표

  • 아래 코드는 2차원 배열 board를 받으면, 방향 배열을 이용해
    현재 위치의 값 i, j이 상하좌우 좌표들의 값 nr, nc보다 하나라도 크거나 같으면
    Falsereturn 하는 예시 함수다.

def simulation(board)
  dr = [-1, 0, 1, 0]
  dc = [0, 1, 0, -1]
  n = len(board)
  flag = True
  
  for i in range(5):
      for j in range(5):
          for k in range(4):
              nr = i + dr[k]
              nc = j + dc[k]
              if nr >= 0 and nr < 5 and nc >= 0 and nc < 5:
                  if board[nr][nc] <= board[i][j]:
                      flag = False
  return flag

만약 8방향 탐색을 하고 싶다면 방향 배열은 아래와 같다.

dr = [-1, -1, 0, 1, 1, 1, 0, -1]
dc = [0, 1, 1, 1, 0, -1, -1, -1]

시뮬레이션 알고리즘을 이용해 풀이한 문제들은 아래와 같다.

profile
끄적끄적

0개의 댓글