파이썬 알고리즘 : 공원산책

조건문

2023년 11월 27일 알고리즘 문제풀이

문제

공원산책

난이도

Lv.1

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def solution(park, routes):
    H = len(park)
    W = len(park[0])
    a = 0
    b = 0
    for i in range(H):
        for j in range(W):
            if park[i][j] == 'S':
                a = i
                b = j
    def check(p,q,x,y):
        for i in range(1,q+1):
            if p == 'N':
                if x-i < 0 or park[x-i][y] == 'X':
                    return False
            elif p == 'S':
                if x+i >= H or park[x+i][y] == 'X':
                    return False
            elif p == 'E':
                if y+i >= W or park[x][y+i] == 'X':
                    return False
            elif p == 'W':
                if y-i < 0 or park[x][y-i] == 'X':
                    return False
        if p == 'N':
            return x-q,y
        elif p == 'S':
            return x+q,y
        elif p == 'E':
            return x,y+q
        elif p == 'W':
            return x,y-q
    i = 0
    while i < len(routes):
        way_to_go, distance_to_go = routes[i].split()
        if not check(way_to_go,int(distance_to_go), a,b):
            i += 1
            continue
        a,b = check(way_to_go,int(distance_to_go), a,b)
        i += 1
    return [a,b]

어렵진 않은데 좀 귀찮고.. 그렇다. 그래도 이런 문제 많이 풀어서 어렵진 않다. 레벨이 1인 이유는 문제에서 따져야 하는 경우를 모두 설명해줘서 그런듯 하다.