본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Baekjoon] 3190 뱀(파이썬/자바스크립트/NodeJS)

by codingBear 2022. 12. 15.
728x90
반응형

이번 글은 '이것이 취업을 위한 코딩테스트다' 내의 문제를 풀고 정답 코드를 정리한 것입니다.

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 | 나동빈 - 교보문고

이것이 취업을 위한 코딩 테스트다 with 파이썬 | IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인! 취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나

product.kyobobook.co.kr

 

이번 문제는 아래 링크에서 풀어볼 수 있습니다.

 

3190번: 뱀

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

www.acmicpc.net


문제


정답 코드

파이썬 Ver.

자바스크립트 Ver.

답안 1

답안 2

답안 3


문제 풀이

 이번 문제는 전형적인 시뮬레이션 문제이다. 매 초가 흐를 때마다 뱀의 머리 방향이 어디로 바뀌는지, 그리고 방향이 바뀌었을 때 좌표 처리를 어떻게 하는지 좌표값만 잘 처리한다면 수월하게 풀 수 있지 싶다.

 나의 경우 1번 케이스는 통과하는데 나머지 케이스를 통과하지 못했다. 그리고 사과 위치를 (0, 0) 기준으로 입력했는데 문제 풀이를 보니 (1, 1) 기준으로 입력해야 됐다. 그리고 방향 전환 코드를 짜는 데 애를 먹었는데 아래와 같이 생각하면 간단하다.

# 동쪽 회전: 상(0) -> 우(1) -> 하(2) -> 좌(3) -> 상(0) : +1 방향
# 왼쪽 회전: 상(0) -> 좌(3) -> 하(2) -> 우(1) -> 상(0) : -1 방향

 또한 지나간 자리를 처리하기 위해 큐를 사용해야 한다는 것도 알게 되었다. 왜냐하면 사과가 없는 경우 이동하고 나서 꼬리를 잘라야 하는데 이때 큐는 선입선출이므로 pop(0)을 사용한다면 가장 먼저 들어간 좌표값이 제거된다. 제거된 해당 좌표값을 0으로 처리하면 꼬리 자르기를 구현할 수 있다.

 


함께 보기

 

[백준] 3190 뱀 - javascript

https://www.acmicpc.net/problem/3190✔️ 알고리즘 : 구현✔️ 사과가 있는 칸은 2로 현재 뱀이 위치해있는 칸은 1로 비어있는 칸은 0으로 설정✔️ 뱀의 위치를 추적하기 위해 path 배열과 뱀의 head, tail을

velog.io

 

728x90
반응형

댓글