[구현, 시뮬레이션&Queue] 뱀 - 백준 3190번
- 런타임 에러는
cin >>
부분을 모르고 주석처리 해서 나버린거고,, - 구현 문제는 막힌다고 그 부분만 계속해서 보고 있는게 아니라 전체를 봐야할듯,,
- 문제를 제대로 읽고 급하게 풀지 말자
풀이
- 게임은 벽에 부딪히거나 자기 몸에 부딪히면 끝
- 자기 몸을 표시해야함 (
-1
로 표시) - 무한 반복 (
while
문)
- 자기 몸을 표시해야함 (
- 현재 방향으로 머리를 이동
- 현재 방향을 표시해야함 (동서남북을 1,2,3,4로 표시함)
- 방향에 따라 좌표를 변화
- 사과가 있는 지 없는지 확인, 사과가 있는 경우 몸의 길이가 늘어난다.
- 사과가 없는 경우 머리가 늘어나고, 꼬리를 당겨야 한다. (PUSH, POP)
- 앞 뒤를 알 수 있는 queue를 사용!
-
맨 뒤 꼬리의 좌표 == 가장 먼저 들어온 좌표 ==
front
- 사과가 있는 경우 머리만 늘어나면 된다. (PUSH)
- 사과가 없는 경우 머리가 늘어나고, 꼬리를 당겨야 한다. (PUSH, POP)
- 시간이 지나고 방향 전환
- 정수로 표시한 동서남북을 시간에 맞춰
L
,D
에 맞게 변경
- 정수로 표시한 동서남북을 시간에 맞춰
구현 문제의 경우 순서가 중요
!주의!
방향 전환의 경우 X초가 끝난 뒤
라는 말이 있기 때문에 방향 전환 코드의 순서가 달라진다면 결과가 달라질 수 있다!
코드
https://github.com/KimGyeongLock/CodingTest/blob/main/3190.cpp