[구름 LEVEL] GameJam (Python)

이솔·2024년 7월 3일

[구름 LEVEL] GameJam

https://level.goorm.io/exam/195692/gamejam/quiz/1


문제 설명

· 주어진 규칙에 따라 두 사람이 게임을 진행했을 때, 이긴 사람의 이름과 점수 출력


접근 방법

· 규칙에 따라 말을 이동했을 때, 말이 이미 방문했던 자리를 방문할 경우 게임을 종료하고, 말이 이동한 거리를 반환


알고리즘 설계 및 구현

def play_game(n, x, y, board):
    # 방향을 나타내는 딕셔너리
    directions = {'U': (-1, 0), 'D': (1, 0), 'R': (0, 1), 'L': (0, -1)}
    # 방문한 위치를 기록하는 2차원 리스트 
    visited = [[False] * n for _ in range(n)]
    score = 0

    # 현재 위치를 방문하지 않은 동안 반복
    while not visited[x][y]:
        # 현재 위치의 명령 계산
        count = int(board[x][y][:-1])  # 숫자 부분
        command = board[x][y][-1]  # 방향 부분
        dx, dy = directions[command]  # 방향에 따른 이동 값

        # 명령된 횟수만큼 이동
        for _ in range(count):
            if not visited[x][y]:  # 현재 위치를 방문하지 않았다면
                visited[x][y] = True  # 현재 위치를 방문한 것으로 표시
                score += 1  # 점수 증가
                # 다음 위치로 이동 (보드가 원형이므로 % n 사용)
                x = (x + dx) % n
                y = (y + dy) % n
            else:  # 이미 방문한 위치라면 이동 중지
                break

    # 최종 점수 반환
    return score

# 보드 크기 입력 받기
n = int(input())

# 두 사람의 시작 위치 입력 받기 (인덱스를 0부터 시작하도록 조정)
x_g, y_g = map(lambda x: int(x) - 1, input().split())
x_p, y_p = map(lambda x: int(x) - 1, input().split())

# 보드 상태 입력 받기
board = [input().split() for _ in range(n)]

# goorm과 player의 점수 계산
score_g = play_game(n, x_g, y_g, board)
score_p = play_game(n, x_p, y_p, board)

# 더 높은 점수를 얻은 사람과 그 점수를 출력
print("goorm" if score_g > score_p else "player", max(score_g, score_p))

결과


0개의 댓글