[구현, 시뮬레이션&Queue] 뱀 - 백준 3190번

최대 1 분 소요

3190번: 뱀

Untitled

  • 런타임 에러는 cin >> 부분을 모르고 주석처리 해서 나버린거고,,
  • 구현 문제는 막힌다고 그 부분만 계속해서 보고 있는게 아니라 전체를 봐야할듯,,
  • 문제를 제대로 읽고 급하게 풀지 말자

풀이

  1. 게임은 벽에 부딪히거나 자기 몸에 부딪히면 끝
    • 자기 몸을 표시해야함 (-1로 표시)
    • 무한 반복 (while문)
  2. 현재 방향으로 머리를 이동
    • 현재 방향을 표시해야함 (동서남북을 1,2,3,4로 표시함)
    • 방향에 따라 좌표를 변화
  3. 사과가 있는 지 없는지 확인, 사과가 있는 경우 몸의 길이가 늘어난다.
    • 사과가 없는 경우 머리가 늘어나고, 꼬리를 당겨야 한다. (PUSH, POP)
      • 앞 뒤를 알 수 있는 queue를 사용!
      • 맨 뒤 꼬리의 좌표 == 가장 먼저 들어온 좌표 == front

        Untitled 1

    • 사과가 있는 경우 머리만 늘어나면 된다. (PUSH)
  4. 시간이 지나고 방향 전환
    • 정수로 표시한 동서남북을 시간에 맞춰 L, D에 맞게 변경

구현 문제의 경우 순서가 중요

!주의!
방향 전환의 경우 X초가 끝난 뒤 라는 말이 있기 때문에 방향 전환 코드의 순서가 달라진다면 결과가 달라질 수 있다!

코드

https://github.com/KimGyeongLock/CodingTest/blob/main/3190.cpp

카테고리:

업데이트: