Algorithm
Baekjoon 백준 알고리즘 - 거북이 ( 8911 )
jssvs
2022. 3. 13. 21:45
반응형
1.문제 소개
- 구현, 시뮬레이션 유형 문제에 해당한다.
https://www.acmicpc.net/problem/8911
2. 코드
import sys
input = sys.stdin.readline
def set_test_case():
command_line = int(input())
commands=[]
for i in range(0,command_line):
commands+=[input()]
return commands
def move_turtle(location,direction,move):
# location[0] -> X 축 location[1] -> Y 축
if direction ==3 or direction ==2:
move = move * -1
if direction == 0 or direction ==2:
location[1] = location[1] + move
elif direction == 1 or direction == 3:
location[0] = location[0] + move
else:
pass
return location
def move_direction(current, direction):
# 0 : up , 1 : right , 2 : down , 3: left
if direction == 'R':
current = (current+1)%4
elif direction == 'L':
current = (current-1)%4
else:
pass
return current
def solution():
commands = set_test_case()
for command in commands:
turtle_direction = 0 # default direction -> UP
turtle_location=[0,0] # default location
maximum_location=[0,0,0,0] # UP , RIGHT, DOWN, LEFT
for c in command:
# set location by command
if c == 'L' or c=='R':
turtle_direction = move_direction(turtle_direction,c)
elif c == 'F':
turtle_location = move_turtle(turtle_location,turtle_direction,1)
elif c == 'B':
turtle_location = move_turtle(turtle_location,turtle_direction,-1)
# save maximum location of turtle
if c == 'F' or c == 'B':
if turtle_location[0] > maximum_location[1]:
maximum_location[1]=turtle_location[0]
elif turtle_location[1] > maximum_location[0]:
maximum_location[0]=turtle_location[1]
elif turtle_location[0] < maximum_location[3]:
maximum_location[3] = turtle_location[0]
elif turtle_location[1] < maximum_location[2]:
maximum_location[2] = turtle_location[1]
# result print
if (maximum_location[1] == 0 and maximum_location[3] ==0) or (maximum_location[0] == 0 and maximum_location[2] ==0):
print(0)
else:
print((abs(maximum_location[0])+abs(maximum_location[2])) * (abs(maximum_location[1])+abs(maximum_location[3])))
if __name__=='__main__':
solution()
3. 코멘트
- IF 문이 많아 좋은 코드로 만들진 못했지만, 요약하자면 move_direction,turtle 로 거북이의 방향과 위치를 명령어기반으로 갱신해주고, 동서남북 방면의 최대값을 저장해 정답을 출력했다.
- 최근 폼도 떨어지기도 했고, 매트릭스 좌표 계산이 머릿속으로 빨리 빨리 안되서 속상했다.
- 다른 스터디원의 풀이 방식을 보니, 내 로직이 쓸데없이 더 복잡해보였지만.. 뭐어쩌겠나.. ㅇㅅㅇ.. 공부해야지.
반응형