본문 바로가기
알고리즘

[구름톤챌린지] day 10 GameJam python

by bzerome240 2023. 8. 27.

 

10일차 미션 문제

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io

 

우선 문제 이해를 하기 위해 적어봅니다!

요약하면 각각 플레이어가 각자의 위치에서 이동하면서 발생하는 점수를 비교하는 것!

'''
1 - 격자 보드의 크기
2 구름이가 말을 올려둔 칸의 좌표 행 열
3 플레이어가 말을 올려둔 칸의 좌표 행 열
n 각 지시사항 이동횟수 이동방향(UDRL)

이동중에 보드 밖으로 나가면 반대쪽의 첫번째칸으로 이동한다
4번 반복 중 이동하다가 이미 한번 방문한 칸을 지나야하는 경우에는 종료
시작 칸을 포함하여 종료되기 전까지 말이 방문한 서로 다른 칸의 개수

return goorm 구름점수 / player 플레이어점수 / 비기는건X
'''

'''
1g 2 3g
4 5 6pg
7 8 9ppg

1 2 3 4p
5 6 7 8p
8 10 11 12
13 14gg 15 16pp
'''

'''
- 구름이와 플레이어의 방문 기록을 관리하는 행렬
- 이동 명령에 따른 방향 관리
- 보드의 범위 밖으로 나갔을 때, 좌표를 반대쪽 첫 번째 칸으로 이동하는 기능
'''

 

음 인풋값을 받고 보드와 시작점은 작성을 했는데

이동하면서 계산할 방법이 안떠올라서 실패했습니당..

size = int(input())
g = list(map(int, input().split(' ')))
p = list(map(int, input().split(' ')))
g_score, p_score = 0, 0
gx, gy = g[0]-1, g[1]-1
px, py = p[0]-1, p[1]-1

print(g, p)

board = []

for i in range(size):
	arr = input().split(' ')
	board.append(arr)

g_cmd = board[gx][gy]
p_cmd = board[px][py]

print('-----------------',g_cmd, p_cmd )

cnt = 0

# while cnt <= 3:
	
# 	for i in range(size):
# 		for j in range(size):
# 			print(i, j)
# 			print(g[0]-1, g[1]-1)
	
	
print(board)

 

 

정답을 보고 작성한 코드입니다~ ㅠ

 

 

day10.py - goorm

구름IDE에서 공유된 소스코드를 볼 수 있는 페이지입니다.

ide.goorm.io:443

def play(sy, sx, N):
	y, x = sy, sx
	visited = [[0] * N for _ in range(N)]
	visited[y][x] = 1
	
	notEnd = True
	
	while notEnd:
		cnt = count[y][x]
		dy, dx = cmd[y][x]
		
		for _ in range(cnt):
			y = (y + dy) % N # 범위를 벗어나는 경우를 처리
			x = (x + dx) % N
			
			if visited[y][x]:
				notEnd = False
				break
			visited[y][x] = 1
	
	return sum([sum(i) for i in visited])


size = int(input())
g = list(map(int, input().split(' ')))
p = list(map(int, input().split(' ')))
gx, gy = g[0]-1, g[1]-1
px, py = p[0]-1, p[1]-1

board = []

for i in range(size):
    arr = input().split(' ')
    board.append(arr)

count = [[0] * size for _ in range(size)]
cmd = [[None] * size for _ in range(size)]
direction = {'L': [0,-1], 'R': [0,1], 'U': [-1,0], 'D':[1,0]} # 각 방향에 대해 미리 선언해두기 if문을 줄일 수 있다.

for i in range(size):
    for j in range(size):
        tmp = board[i][j]
        count[i][j] = int(tmp[:-1])
        key = tmp[-1]
        cmd[i][j] = direction[key]

g_score = play(gx, gy, size)
p_score = play(px, py, size)

if g_score > p_score:
    print("goorm", g_score)
else:
    print("player", p_score)

 

728x90
반응형

댓글