[백준 BOJ] 12100 2048 게임

문제로 이동할려면 여기를 클릭하세요.

풀이

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

코드