카테고리 없음

파이썬 코딩테스트 스터디 2주차 #8 - 문제 07 방문길이

hoony926 2024. 7. 6. 18:20

 

 

문제 07 방문 길이

 

조건1. 이미 지나갔던 길은 Count : X 
조건2. 가로10 세로10 좌표평면을 벗어가는 경우 Ignore한다.

 

 

즉, 8번째 동작과 9번째 동작은 Count하지 않는다.

 

 

아래 그림 역시 7,8번째는 밖으로 벗어나는 경우므로 그냥 무시하고

9번째 동작 수행

 

이 책의 핵심 풀이 과정

1. Set 활용
2. 기능 분리 
    - is_valid_move
    - update_location 
3. 양 방향으로 set에 add해주고 나중에 1/2하기

 

 

def solution(dirs):
    
    x, y = 5,5 #첫 시작점을 (5,5)라고 가정하고 문제 풀이
    
    ans = set() #겹치는 좌표는 1개로 처리하기위해 Set을 활용
       
    for dir in dirs: #dirs = "ULURRDLLU"
        nx,ny = update_location(x,y,dir)
        if not is_valid_move(nx,ny):
            continue
  
        ans.add((x,y,nx,ny))  #실제 방향
        ans.add((nx,ny,x,y))  #반대 방향도 넣어주기위해
     
        x,y = nx,ny #출발지 변경
        
    return len(ans) / 2 #반대방향도 넣어줬기 때문에 2로 나눈다

def is_valid_move(nx,ny) :
    return 0 <= nx < 11 and 0 <= ny <11

def update_location(x,y,dir) :
    if dir =='U':
        nx, ny = x, y+1
    elif dir =='D':
        nx, ny = x, y-1
    elif dir =='L':
        nx, ny = x-1, y
    elif dir =='R':
        nx, ny = x+1, y 
    return nx,ny

 

지금까지 "코딩 테스트 합격자 되기 - 파이썬" 편 책에서 다룬 문제 중에서

제일 어려웠다 ...ㅜㅜ

 

 

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

 

프로그래머스

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

programmers.co.kr