나의 개발일지

[프로그래머스] Lv.2 방문 길이 [Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.2 방문 길이 [Python, 파이썬]

YoonJuHan 2023. 12. 15. 17:24
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/49994
  • 🔑 좌표 크기 2배, 길에만 체크
    • 10 X 10 좌표를 21 X 21 좌표로 만든다.
    • 정 가운데서 출발하기 때문에 +1 을해서 정 가운데서 출발할 수 있도록 함 (10, 10)
    • 따라서 이동도 2칸씩 한다. (좌표를 2배 늘렸으니까)
    • 💡 하지만 이동 후에 체크를 이동한 자리에 하는 것이 아닌 이동한 길에 체크
      • ex) 오른쪽으로 간다면 실제 이동은 +2지만 체크는 +1에
      • 같은 곳을 다른 길로는 갈 수 있기 때문
    • 좌표 범위 제한도 잘해주면 끝 ✨

 

def solution(dirs):
    answer = 0
    
    MAP = [[0] * 21 for _ in range(21)]
    
    x, y = 10, 10
    
    for d in dirs:
        if d == 'U':                # 위
            if x - 2 < 0: continue
            if MAP[x-1][y] == 0:
                MAP[x-1][y] = 1
                answer += 1
            x -= 2
            
        elif d == 'D':              # 아래
            if x + 2 > 20: continue
            if MAP[x+1][y] == 0:
                MAP[x+1][y] = 1
                answer += 1
            x += 2
            
        elif d == 'R':              # 오른쪽
            if y + 2 > 20: continue
            if MAP[x][y+1] == 0:
                MAP[x][y+1] = 1
                answer += 1
            y += 2
            
        elif d == 'L':              # 왼쪽
            if y - 2 < 0: continue
            
            if MAP[x][y-1] == 0:
                MAP[x][y-1] = 1
                answer += 1
            y -= 2
    
    return answer
Comments