반응형
https://level.goorm.io/exam/195692/gamejam/quiz/1
문제
풀이
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. 배열을 넘어가는 순간 반대편으로 돌아오는것도 조심해야함
반응형
'알고리즘' 카테고리의 다른 글
[구름톤 챌린지] Day 12 - 발전기(DFS) (0) | 2023.09.03 |
---|---|
[구름톤 챌린지] Day 11 - 통증2(동적 프로그래밍) (0) | 2023.09.03 |
[구름톤 챌린지] Day 9 - 폭탄 구현하기(2) (0) | 2023.09.03 |
[구름톤 챌린지] Day 8 - 통증 (0) | 2023.09.03 |
[구름톤 챌린지] Day 7 - 구름 찾기 깃발 (0) | 2023.08.23 |