알고리즘

[구름톤 챌린지] Day 10 - GameJam(시뮬레이션)

motti 2023. 9. 3. 17:09
반응형

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

 

구름LEVEL

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

level.goorm.io


문제


풀이

n = int(input())

arr_g = [[0]*n for _ in range(n)]
arr_p = [[0]*n for _ in range(n)]

g1,g2 = map(int,input().split())
g1-= 1
g2-= 1
arr_g[g1][g2] = 1

p1,p2 = map(int,input().split())
p1 -= 1
p2 -= 1
arr_p[p1][p2] = 1

act = [list(input().split()) for _ in range(n)]

def gr():
	global g1,g2
	while True:
		s = act[g1][g2]
		loc = int(s[:-1])
		if s[-1] == 'L':
			for _ in range(loc):
				g2 -= 1
				if g2 <0:
					g2 = n-1
				if arr_g[g1][g2] == 1:
					return sum(map(sum,arr_g))
				else:
					arr_g[g1][g2] = 1
		elif s[-1] == 'R':
			for _ in range(loc):
				g2 += 1
				if g2>=n:
					g2 = 0
				if arr_g[g1][g2] == 1:
					return sum(map(sum,arr_g))
				else:
					arr_g[g1][g2] = 1
		elif  s[-1] == 'U':
			for _ in range(loc):
				g1 -= 1
				if g1 <0:
					g1 = n-1
				if arr_g[g1][g2] == 1:
					return sum(map(sum,arr_g))
				else:
					arr_g[g1][g2] = 1
		else:
			for _ in range(loc):
				g1 += 1
				if g1 >=n:
					g1 = 0
				if arr_g[g1][g2] == 1:
					return sum(map(sum,arr_g))
				else:
					arr_g[g1][g2] = 1

def pl():
	global p1,p2
	while True:
		s = act[p1][p2]
		loc = int(s[:-1])
		if s[-1] == 'L':
			for _ in range(loc):
				p2 -= 1
				if p2 <0:
					p2 = n-1
				if arr_p[p1][p2] == 1:
					return sum(map(sum,arr_p))
				else:
					arr_p[p1][p2] = 1
		elif s[-1] == 'R':
			for _ in range(loc):
				p2 += 1
				if p2>=n:
					p2 = 0
				if arr_p[p1][p2] == 1:
					return sum(map(sum,arr_p))
				else:
					arr_p[p1][p2] = 1
		elif  s[-1] == 'U':
			for _ in range(loc):
				p1 -= 1
				if p1 <0:
					p1 = n-1
				if arr_p[p1][p2] == 1:
					return sum(map(sum,arr_p))
				else:
					arr_p[p1][p2] = 1
		else:
			for _ in range(loc):
				p1 += 1
				if p1 >=n:
					p1 = 0
				if arr_p[p1][p2] == 1:
					return sum(map(sum,arr_p))
				else:
					arr_p[p1][p2] = 1
goorm = gr()
player = pl()

if goorm > player:
	print('goorm', goorm)
else:
	print('player', player)

1. 주의해야할점은 주어진 행렬의 입력값을 모두 실행하는 것이 아니라 첫 시작에서 주어진 입력값을 실행하고 그 위치로 넘어가는 것이다.

2. 배열을 넘어가는 순간 반대편으로 돌아오는것도 조심해야함

 

반응형