자료구조 및 알고리즘/알고리즘

[알고리즘] 이것이 취업을 위한 코딩 테스트다 - Chapter 4

benjykim 2021. 1. 20. 19:37
반응형

구현

  1. 왕실의 나이트
  • 소스코드

    location = input()
    x = ord(location[0]) - ord('a') + 1
    y = int(location[1])
    
    dx = [-2,-1,1,2,2,1,-1,-2]
    dy = [-1,-2,-2,-1,1,2,2,1]
    
    count = 0
    
    for i in range(8):
        nx = x + dx[i]
        ny = y + dy[i]
      if nx < 1 or ny < 1 or nx > 8 or ny > 8:
            continue
        count += 1
    
    print("count = ", count)
  1. 게임 개발
  • 소스코드

    n, m = map(int, input().split(" "))
    x,y,direction = map(int, input().split(" "))
    
    my_map = []
    for i in range(n):
        arr = list(map(int, input().split(" ")))
        my_map.append(arr)
    
    visited = [[0] * m for _ in range(n)]
    visited[x][y] = 1
    
    count  = 1
    turn_count = 0
    
    #     서 남 동 북
    dx = [0, 1, 0, -1] 
    dy = [-1, 0, 1, 0]
    
    while True:
        nx = x + dx[direction % 4]
        ny = y + dy[direction % 4]
    
        # 육지이면서 방문한 적이 없는 경우
        if visited[nx][ny] == 0 and my_map[nx][ny] == 0:
            visited[nx][ny] = 1
            x, y = nx, ny
            count += 1
            turn_count = 0
            continue
        else:
            direction += 1
            turn_count += 1
    
        if turn_count == 4:
            nx = x - dx[direction % 4]
            ny = y - dy[direction % 4]
            if my_map[nx][ny] == 1:
                break
            else:
                x, y = nx, ny
            turn_count = 0
    
    print("count = ", count)        
반응형