Algorithm/1일 1코테

[🥰 프로그래머스] 공원 산책

대인보우 2023. 8. 18. 18:57
반응형

 

문제

https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

dx = {'N':-1, 'S':1, 'E':0, 'W': 0}
dy = {'N': 0, 'S':0, 'E':1, 'W':-1}

def solution(park, routes):
    answer = []
    x, y = -1, -1 # 시작점
    N, M = len(park), len(park[0]) # 공원의 가로세로
    # 시작점 찾기
    for i in range(N): 
        for j in range(M):
            if park[i][j] == 'S':
                x, y = i, j

    for route in routes:
    	# 방향, 이동 숫자
        dir_, dist = route.split(' ')

        isFalse = False
        for i in range(1, int(dist) + 1):
        	# 모두 이동했을 경우의 좌표
            nx, ny = x + dx[dir_] * i, y + dy[dir_] * i
            # 공원 벗어나면 out
            if nx < 0 or ny < 0 or nx > N-1 or ny > M-1:
                isFalse = True
                break
            # 지뢰가 있어도 out
            if park[nx][ny] == 'X':
                isFalse = True
                break
		# 아웃일 경우는 실행 x
        if isFalse:
            continue
        
        nx, ny = x + dx[dir_] * int(dist), y + dy[dir_] * int(dist)
        x, y = nx, ny

    answer = [x, y]

    return answer

 

반응형