프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

문제

 

https://www.acmicpc.net/problem/3190

 

3190번: 뱀

 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임

www.acmicpc.net

 

 

풀이

 

solved.ac 난이도: Gold 5

 

큐를 이용하면 더 쉽게 구현할 수 있는 문제.

 

큐에 머리가 이동한 위치를 저장하고, 만약 이동한 곳에 사과가 없다면 큐의 앞에서 pop해준다. (꼬리가 줄어듬)

단, 머리가 움직인 곳에 꼬리가 있더라도 결국 꼬리는 다음 칸으로 이동해야하므로 게임 오버가 아님을 주의하자.

 

뱀의 이동방향의 경우 아래와 같이 mod연산으로 구현하였다. (오른쪽(0) 부터 시계방향으로 1씩 증가, mod: 4 )

pair<int,char> turn의 first에는 방향 전환 시간, second에는 전환 방향을 저장함.

 

1
2
3
4
5
6
7
8
if(idx < turn_num && time == turn[idx].first){
  if(turn[idx].second == 'L')
    direction = (direction +mod -1) % mod;
  else
    direction = (direction +1) % mod;
    
  ++idx;
}
cs

 

 

코드

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함