-- 예전 기록/[완료] 구름톤 챌린지

[ 구름톤 챌린지 ] 10일차 미션 - GameJam

rejo 2023. 8. 25. 10:29

참여자 1 ?

구름톤 챌린지 2주차의 마지막입니다. 챌린지를 통해 문제 풀이 실력을 향상시킬 수 있으며, 블로그에 학습 일기도 작성하면 추가 보상도 주어지니 관심 있으시면 참여해보시는 것을 추천드립니다.

https://level.goorm.io/l/challenge/goormthon-challenge

 

구름LEVEL

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

level.goorm.io

 

문제

입력 / 출력

풀이 과정

단순 시뮬레이션 구현으로 풀이했다. 이동하다가 이미 한 번이라도 방문한 칸을 다시 지나는 지를 검토하는 것이 중요 포인트인 문제이다. 맵 밖으로 나가면 반대쪽으로 돌아오는 구조이니 이 점도 주의해야 한다.

import sys
input = sys.stdin.readline

n = int(input().rstrip())
goormPos = list(map(int, input().rstrip().split()))
playerPos = list(map(int, input().rstrip().split()))
maps = [list(input().rstrip().split()) for _ in range(n)]

goormPos[0] -= 1; goormPos[1] -= 1; playerPos[0] -= 1; playerPos[1] -= 1;

def game(startPos):
	visited = [[0 for _ in range(n)] for _ in range(n)]
	cnt = 1
	visited[startPos[0]][startPos[1]] = 1
	done = 0
	
	while True:
		now = maps[startPos[0]][startPos[1]]
		
		if now[-1] == 'L':
			for _ in range(int(now[:-1])):
				startPos[1] -= 1
				if startPos[1] < 0: startPos[1] += n
				
				if visited[startPos[0]][startPos[1]] == 1:
					done = 1
					break
				else:
					visited[startPos[0]][startPos[1]] = 1
					cnt += 1
		elif now[-1] == 'R':
			for _ in range(int(now[:-1])):
				startPos[1] = (startPos[1] + 1) % n
				
				if visited[startPos[0]][startPos[1]] == 1:
					done = 1
					break
				else:
					visited[startPos[0]][startPos[1]] = 1
					cnt += 1
		elif now[-1] == 'U':
			for _ in range(int(now[:-1])):
				startPos[0] -= 1
				if startPos[0] < 0: startPos[0] += n
				
				if visited[startPos[0]][startPos[1]] == 1:
					done = 1
					break
				else:
					visited[startPos[0]][startPos[1]] = 1
					cnt += 1
		else: #D
			for _ in range(int(now[:-1])):
				startPos[0] = (startPos[0] + 1) % n
				
				if visited[startPos[0]][startPos[1]] == 1:
					done = 1
					break
				else:
					visited[startPos[0]][startPos[1]] = 1
					cnt += 1
		
		if done: break
			
	return cnt

goormScore = game(goormPos)
playerScore = game(playerPos)

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