[프로그래머스] Lv.1: 공원 산책

jieunee·2023년 4월 6일

🤔 문제


✅ 풀이

def solution(park, routes):
    answer = []
    
    # 명령 무시 조건
    # 1. 주어진 방향으로 이동할 때 공원을 벗어나는지
    # 2. 주어진 방향으로 이동 중 장애물을 만나는지 확인
    
    p = []
    l = r = 0 # 시작 인덱스
    
    for i in park:
        p.append(list(i))
            
    for i in range(len(routes)):
        routes[i] = routes[i].split(' ')
   
    for i in range(len(p)):
        for j in range(len(p[i])):
            if p[i][j] == 'S':
                l = i
                r = j      
    le = len(p[0])
         
    for a, b in routes:        
        if a == 'E': 
            flag = True
            for i in range(r, r+int(b)+1):
                    if l < 0 or r+int(b) < 0 or l >= le or r+int(b) >= le:
                        flag = False
                        break
                    elif p[l][i] == 'X':  
                        flag = False
                        break
            if flag == True:                
                r += int(b)
        elif a == 'S':
            flag = True
            for i in range(l, l+int(b)+1):
                    if l+int(b) < 0 or r < 0 or l+int(b) >= le or r >= le:
                        flag = False
                        break
                    elif p[i][r] == 'X':  
                        flag = False
                        break 
            if flag == True:
                l += int(b)                               
        elif a == 'N':
            flag = True
            for i in range(l, l-int(b)-1, -1):                    
                    if l-int(b) < 0 or r < 0 or l-int(b) >= le or r >= le:
                        flag = False
                        break
                    elif p[i][r] == 'X':  
                        flag = False
                        break              
            if flag == True:
                l-= int(b)    
        elif a == 'W':
            flag = True
            for i in range(r, r-int(b)-1, -1):
                    if l < 0 or r-int(b) < 0 or l >= le or r-int(b) >= le:
                        flag = False
                        break
                    elif p[l][i] == 'X':  
                        flag = False
                        break  
            if flag == True:
                r-= int(b)            
                       
    answer.append(l)                                         
    answer.append(r)
    
    return answer

🙆🏻‍♀️ 후기

Lv.1임에도 불구하고 정답률이 30%인 문제 .. 🤦🏻‍♀️
나온 지 얼마 안 된 문제라 참고할 만한 코드가 많이 없었다.
어떻게든 풀긴 풀었는데 좋은 코드인지 잘 모르겠다 ..!

코드 개선사항 있으면 말씀해 주세요🥲 !!

profile
Back-End Developer 🌱

0개의 댓글