[백준 BOJ] 12100 2048
2048 게임은 4×4 크기의 보드에서 혼자 즐기는 재미있는 게임이다..
문제로 이동할려면 여기를 클릭하세요.
풀이
- 먼저 2048 게임에서
이동
기능을 완벽히 구현하는 것이 첫 번째 과제입니다. 이동 기능이 완벽히 구현되면 최대 5번 이동시켜 가장 큰 블럭을 찾는 것은재귀
를 이용해 간단하게 해결할 수 있습니다. - 왼쪽, 오른쪽, 위, 아래 이동은 범위만 약간 다를 뿐 같은 맥락으로 풀 수 있습니다. 왼쪽을 예시로 들어보겠습니다.
- 새로운 숫자들을 저장할
newBoard
벡터를 선언해줍니다. - 각 행에 대해서 왼쪽 부터 검색을 합니다.
cnt
를0
으로 초기화 합니다.- 숫자는 한번에
2
개 씩 합쳐지므로first
와second
변수를 만들어 비교를 시작합니다. - 두 변수가 같을 때는
newBoard[행][cnt]
에 변수의 2배 값을 삽입해주고cnt
를 증가시킵니다. - 다를 때는
first
만 삽입해주고first
에second
값을 옮긴 다음 비교를 반복합니다.
- 새로운 숫자들을 저장할
- 위의 설명 이외에 가장자리 예외처리에 주의해야합니다.
- 재귀함수를 구현할 때는 함수가 종료하기 전에 배열이 복구 되어야 한다는 점을 꼭 주의하세요!(
203
행 참고)
코드