programmers- lv.1 (공원 산책)

이예송·2023년 7월 20일

PS

목록 보기
53/97

문제링크: 공원 산책

✍🏻 Information

content
언어python
난이도⭐️⭐️+(0.5)
풀이시간40분
제출횟수5
인터넷검색유무no




🍒 My Code

def solution(park, routes):
    direction ={'W':[-1,0],'E':[1,0],'N':[0,-1],'S':[0,1]}
    x,y=-1,-1
    for idxy, i in enumerate(park):
        idxx = i.find('S')
        if idxx!=-1:
            x,y = idxx,idxy
            break
    print(y,x)
    for route in routes:
        nextx = x+direction[route.split()[0]][0]*int(route.split()[1])
        nexty = y+direction[route.split()[0]][1]*int(route.split()[1])
        if nextx >= len(park[0]) or nextx < 0: #0체크 안해줬었음
            continue
        if nexty >= len(park) or nexty < 0:
            continue
        isX = -1
        for i in range(min(x,nextx),max(x,nextx)+1): #min,max
            if park[y][i]=="X":
                isX=0
                break
        for i in range(min(y,nexty),max(y,nexty)+1):
            if park[i][x]=="X":
                isX=0
                break
        if isX==0:
            continue
        x,y = nextx,nexty
        print(y,x)
    return [y,x]




💡 What I learned

  • 처음에는 도착지점만 X가 아니면 갈 수 있는건줄 알았는데 그게 아니라 가는길에 X 자체가 있으면 안되는거였다.
  • 그 다음에는 nextx<0, nexty<0 체크 안해줘서 런타임 오류가 났다. graph에서는 x,y 범위체크 양옆으로 무조건!!!!!
  • 또한 오른쪽->왼쪽(아래->위)로 갈수도 있기 때문에 x와 nextx(또는 y와 nexty) 중에 작은수부터 큰수 순으로 for문을 돌려야하는데 처음에 x부터 nextx(y부터 nexty)로 돌렸다.
  • 이걸 질문하기에서 testcase 보고 알았다는게 넘 아쉽다. 다음부턴 꼭꼭 내가 testcase 여러가지 생각해보면서 오류 수정하자!!

0개의 댓글