ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준] 8911번 거북이(python)
    Python/BAEKJOON 2022. 1. 21. 16:55
    728x90

    문제)

     

     

    알고리즘)

    - "시작" 부분에서 활용할 변수들 선언 각 테스트마다 초기화를 위함

    - 이동명령에 따른 def move_d와 def turtle_s 함수  

    - "좌표 계산"은 거북이의 활동 반경을 기록

    - result_x, result_y   x좌표(최대- 최소) * y좌표(최대-최소) 출력 

     

    코드)

    #거북이
    import sys
    input = sys.stdin.readline
    
    test_c = int(input()) #테스트 갯수
    
    
    def move_d(i): #방향 회전
        global cnt
    
        if i == 'L':
            cnt -= 1
            cnt %= 4
    
        elif i == 'R':
            cnt += 1
            cnt %= 4
    
        return cnt
    
    def turtle_s(turtle, i): #해당 방향으로 이동
        global cnt
        
        if i == 'B':
            turtle[0] -= move_x[cnt]
            turtle[1] -= move_y[cnt]
    
        else:
            turtle[0] += move_x[cnt]
            turtle[1] += move_y[cnt]
        
        return turtle
    
    for _ in range(test_c):
    #   시작
        case = list(input().rstrip()) #이동 명령 부분
        move_x = [0, 1, 0, -1] # 이동 x좌표
        move_y = [1, 0, -1, 0] # 이동 y좌표
        cnt = 0                # 방향 조정 변수
        turtle = [0, 0]        #거북이의 현재 위치
        result_x = [0, 0]      #최종 계산에 사용할 x좌표의 최대 최소
        result_y = [0 ,0]      #최종 계산에 사용할 y좌표의 최대 최소
        
    
        for i in case:
            if i == 'L' or i == 'R': 
                move_d(i)
    
            elif i == 'B' or i == 'F':
                turtle_s(turtle, i)
                #이동 후 좌표 계산
                result_x[0] = min(turtle[0], result_x[0]) 
                result_x[1] = max(turtle[0], result_x[1])
                result_y[0] = min(turtle[1], result_y[0])
                result_y[1] = max(turtle[1], result_y[1])
            
        print((result_x[1]-result_x[0])*(result_y[1]-result_y[0])) #최종 출력
    728x90
Designed by Tistory.