본문으로 건너뛰기
bobob

게임 가이드게임 공략 · 1/27

2048 모서리 전략과 뱀 모양 배열

2048이 256이나 512에서 자꾸 막힌다면 대개 배치가 문제입니다. 큰 타일을 모서리에 두고 뱀 모양으로 쌓는 법을 컴퓨터로 수천 판 둬 본 결과와 함께 설명합니다.

Bob10분 읽기

핵심 요약

  • 가장 큰 타일을 한 모서리에 두고, 그 옆으로 큰 수부터 한 줄씩 꺾어 쌓습니다
  • 빈칸을 어디에 남기느냐로 새 타일이 생길 자리를 좁힐 수 있습니다
  • 뱀 모양으로 판을 채점하며 두 수 앞까지 따진 컴퓨터는 37%의 판에서 2048을 만들었습니다
목차

2048은 규칙을 배우는 데 1분이면 충분하지만, 2048 타일까지 가는 길은 생각보다 깁니다. 아래 시뮬레이션에서 모서리를 지키는 방향 순서만 정해 두고 둔 컴퓨터는 2,000판 가운데 한 번도 1024를 만들지 못했습니다. 운보다 타일을 어디에 두느냐가 결과를 가른다는 뜻입니다. 아래 내용은 이 사이트의 2048이 실제로 동작하는 규칙을 코드로 확인해 정리했고, 표와 그래프의 숫자는 같은 규칙으로 직접 계산하거나 컴퓨터로 수천 판을 끝까지 두어 얻은 값입니다.

한눈에 보기

원칙하는 일효과가 있는 이유
모서리 고정가장 큰 타일을 한 모서리(예: 왼쪽 아래)에 두고 옮기지 않는다큰 타일이 가운데로 나오면 작은 타일 사이에 갇힌다
뱀 모양 배열바닥 줄을 큰 수부터 채우고, 줄 끝에서 꺾어 위 줄로 이어 간다이웃한 타일끼리 크기가 비슷해 연달아 합쳐진다
방향 제한←·↓ 위주, →는 바닥 줄이 가득 찼을 때만, ↑는 최후의 수단모서리를 비우는 방향을 쓰지 않는다
빈칸 관리빈칸을 뱀의 꼬리 쪽에 모아 둔다새 타일은 빈칸 중 무작위 한 곳에 생긴다
확률 감각새 타일은 2가 90%, 4가 10%한 칸짜리 틈에 모든 계획을 걸지 않는다

우리 게임의 규칙에서 알아 둘 것

전략은 규칙에서 나옵니다. 이 사이트의 2048은 다음과 같이 움직입니다.

  • 판은 4×4이고, 타일 두 개가 놓인 채로 시작합니다.
  • 타일이 하나라도 움직이거나 합쳐지면, 빈칸 가운데 한 곳이 무작위로 골라져 새 타일이 하나 생깁니다. 2가 나올 확률은 90%, 4가 나올 확률은 10%입니다.
  • 아무 타일도 움직이지 않는 방향을 누르면 아무 일도 일어나지 않고 새 타일도 생기지 않습니다. 막힌 방향을 눌러 보는 것은 손해가 아닙니다.
  • 한 번 이동할 때 타일 하나는 한 번만 합쳐집니다. 4·4·8을 왼쪽으로 밀면 16이 아니라 8·8이 됩니다. 같은 수가 셋이면 미는 방향 쪽 두 개가 먼저 합쳐지고(2·2·2를 오른쪽으로 밀면 오른쪽 끝이 4, 그 옆이 2), 넷이면 두 쌍이 따로 합쳐집니다.
  • 두 타일이 합쳐지면 새로 생긴 타일의 숫자만큼 점수가 오릅니다.
  • 2048 타일을 만들면 축하 화면이 뜨고, '계속 도전'을 누르면 더 큰 타일에 도전할 수 있습니다. 더 밀 수 있는 방향이 없으면 끝납니다.
  • 되돌리기는 없습니다. 대신 진행 상황이 이 브라우저에 자동 저장되니, 급하게 두지 말고 쉬었다가 이어서 두어도 됩니다.

2014년 3월 가브리엘레 치룰리가 공개한 원조 2048도 타일 두 개로 시작하고 새 타일을 90% 대 10%로 만듭니다. 공개된 소스 코드에서 직접 확인할 수 있습니다.

모서리 전략: 가장 큰 타일의 집을 정하기

가장 먼저 할 일은 가장 큰 타일이 머물 모서리를 하나 정하는 것입니다. 이 글은 왼쪽 아래를 기준으로 설명하지만, 어느 모서리든 한 곳을 정해 끝까지 지키는 것이 중요합니다.

모서리가 좋은 이유는 이웃이 적기 때문입니다. 가운데 칸은 네 방향으로 다른 타일과 맞닿아 있어서, 큰 타일이 가운데 있으면 작은 타일들이 그 주위를 둘러싸고 서로 떨어져 버립니다. 모서리 칸은 이웃이 둘뿐이라, 그 두 이웃만 크기가 비슷하게 유지하면 됩니다.

뱀 모양 배열: 한 줄씩 꺾어 가며 작아지게

왼쪽 아래 1024에서 시작해 바닥 줄은 오른쪽으로, 둘째 줄은 왼쪽으로 작아지는 뱀 모양 배열
왼쪽 아래 1024에서 시작해 바닥 줄은 오른쪽으로, 둘째 줄은 왼쪽으로 작아지는 뱀 모양 배열

모서리를 정했다면 그 모서리에서 출발해 숫자가 차례로 작아지도록 놓습니다. 바닥 줄을 1024, 512, 256, 128처럼 오른쪽으로 갈수록 작아지게 채우고, 줄 끝의 128 위에서 방향을 꺾어 64, 32, 16, 8로 이어 가는 식입니다. 위에서 보면 뱀이 구불구불 기어가는 모양이라 흔히 뱀 모양 배열이라고 부릅니다.

이 배열의 장점은 합병이 사슬처럼 이어진다는 데 있습니다. 그림에서 둘째 줄 왼쪽 끝의 8 위에 8이 하나 더 만들어지면 ↓로 합쳐 16이 되고, 옆의 16과 합쳐 32가 되는 식으로 줄을 따라 하나씩 커지다가 결국 바닥 줄의 큰 수까지 닿습니다. 반대로 큰 수와 작은 수가 뒤섞여 있으면, 합치고 싶은 두 타일 사이에 다른 수가 끼어 아무리 밀어도 붙지 않습니다.

완벽한 뱀을 만들 필요는 없습니다. 핵심은 큰 수 옆에는 그다음으로 큰 수가 오게 한다는 한 가지입니다. 512 옆에 2가 박히는 것처럼 이 원칙이 무너지는 순간이 대개 판이 막히기 시작하는 지점입니다.

방향은 셋만, 그중 둘을 주로

왼쪽 아래 모서리를 지킨다면 주로 쓰는 방향은 ←와 ↓입니다. 이 두 방향은 가장 큰 타일을 모서리 쪽으로 누르기만 할 뿐 떼어 내지 않습니다.

→는 조심해서 써야 합니다. 바닥 줄이 네 칸 모두 차 있고 그 안에 합칠 쌍이 없다면 →를 눌러도 바닥 줄은 꿈쩍하지 않으니 안전합니다. 문제는 바닥 줄에 빈칸이 있을 때입니다.

바닥 줄 오른쪽이 비어 있을 때 →를 누르면 256이 모서리에서 밀려나고, ↓를 누르면 위의 4가 내려와 빈칸이 메워지는 비교
바닥 줄 오른쪽이 비어 있을 때 →를 누르면 256이 모서리에서 밀려나고, ↓를 누르면 위의 4가 내려와 빈칸이 메워지는 비교

위 그림의 판에서 →를 누르면 바닥 줄 전체가 오른쪽으로 한 칸씩 밀리면서 256이 모서리를 떠납니다. 이때 빈칸은 8개이고 새 타일은 그중 한 곳에 떨어지니, 모서리에 새 타일이 박힐 확률은 1/8입니다. 운 좋게 피하더라도 256을 모서리로 되돌리려면 한 수를 더 써야 합니다. 같은 판에서 ↓를 누르면 위에 있던 4가 내려와 바닥 줄의 빈칸을 메우고, 바닥 줄이 가득 차서 이후의 →도 안전해집니다. 바닥 줄의 빈칸은 옆이 아니라 위에서 채운다고 기억해 두면 좋습니다.

↑는 다른 세 방향이 모두 막혔을 때만 씁니다. 가장 큰 타일 위쪽에 빈칸이 하나라도 있다면 ↑를 누르는 순간 그 타일이 떠오르고, 비워진 모서리에 새 타일이 들어올 수 있습니다. 어쩔 수 없이 ↑를 눌렀는데 모서리가 아직 비어 있다면, 바로 ↓로 큰 타일을 다시 내려 보내세요. 반대로 모서리가 있는 세로줄 네 칸이 모두 차 있고 그 안에 합칠 쌍이 없다면, ↑를 눌러도 모서리 타일은 움직이지 않습니다.

새 타일이 생길 자리를 통제하기

새 타일은 빈칸 가운데 한 곳에 똑같은 확률로 생깁니다. 빈칸이 8개면 각 칸이 1/8, 빈칸이 2개면 1/2입니다. 그래서 빈칸이 적을수록 새 타일이 어디에 떨어질지 예측하기 쉬워지고, 빈칸이 하나뿐이면 새 타일은 반드시 그 자리에 생깁니다.

이 사실을 거꾸로 쓰면 새 타일을 원하는 곳으로 유도할 수 있습니다. 모서리와 바닥 줄은 비우지 않고 빈칸을 뱀의 꼬리 쪽(위의 그림에서는 윗줄)에 모아 두면, 새 타일은 늘 꼬리 쪽에서 태어나 작은 수끼리 합쳐지며 머리 쪽으로 흘러갑니다.

4가 나올 확률 10%도 무시할 수 없습니다. 열 번 움직이면 적어도 한 번 4가 나올 확률이 약 65%입니다(1 − 0.9의 10제곱). 2와 2를 합치려고 남겨 둔 칸에 4가 떨어지면 계획이 틀어지니, 한 칸짜리 틈 하나에 판 전체를 거는 수는 피하는 편이 좋습니다.

숫자로 보는 2048

타일을 합쳐도 판 위 숫자의 합은 변하지 않습니다. 합이 늘어나는 것은 새 타일이 생길 때뿐이고, 새 타일 하나의 평균값은 2 × 0.9 + 4 × 0.1 = 2.2입니다. 그래서 2048 타일 하나를 만들려면 판 위 숫자의 합이 적어도 2048이 되어야 하고, 처음 두 타일을 빼면 평균적으로 900번 넘게 움직여야 합니다.

만들 타일적어도 필요한 이동 수(평균)그 타일을 만들며 쌓이는 점수(약)
256약 114번1,750점
512약 231번4,000점
1024약 464번9,030점
2048약 929번20,110점
4096약 1,860번44,310점

점수 열은 2만으로 만들었을 때의 점수(2048이면 2048 × 10 = 20,480점)에서, 처음부터 4로 태어나 2+2 합병을 건너뛴 타일(평균 열 개 중 하나)의 몫을 뺀 값입니다. 실제로 아래 시뮬레이션에서 2048을 만든 판들은 평균 1,002번째 이동에서, 점수가 약 20,800점일 때 2048에 도달했습니다. 점수가 1만 점 근처라면 1024 하나를 만들 만큼 온 셈이고, 2048까지는 비슷한 길이 한 번 더 남아 있다는 뜻입니다.

전략별로 얼마나 차이가 날까

같은 규칙으로 컴퓨터가 끝까지 두게 하고, 게임이 끝났을 때 판에 남은 가장 큰 타일을 모았습니다. 정해진 규칙만 따르는 방식은 2,000판씩, 앞을 내다보며 계산하는 방식은 시간이 오래 걸려 300판을 두었습니다.

전략별로 게임이 끝날 때의 최대 타일 분포를 비교한 막대그래프
전략별로 게임이 끝날 때의 최대 타일 분포를 비교한 막대그래프
  • 무작위로 누르기: 91%가 128 이하에서 끝났고 512는 한 번도 나오지 않았습니다. 평균 119번 움직이고 끝났습니다.
  • 모서리 순서 고정(↓, ←, →, ↑ 순서로 움직일 수 있는 첫 방향): 512까지 간 판이 5%로 늘었지만 1024는 없었습니다.
  • 빈칸이 가장 많이 남는 방향: 512 이상이 12%였습니다.
  • 모서리 + 빈칸(↓와 ← 가운데 빈칸이 많이 남는 쪽, 둘 다 막히면 →, 그래도 막히면 ↑): 512 이상 15%, 1024 이상 0.25%였습니다.
  • 뱀 모양 평가 + 두 수 앞보기: 왼쪽 아래에서 뱀 모양으로 따라가며 칸마다 절반씩 줄어드는 가중치와 빈칸 수로 판을 채점하고, 내 수와 그다음 수까지 새 타일이 생길 수 있는 모든 경우를 따져 방향을 고르게 했습니다. 1024 이상이 83%, 2048 이상이 37%였습니다.

결과가 말해 주는 것은 두 가지입니다. 첫째, 방향 규칙만으로는 부족합니다. 모서리를 지키는 순서를 정하는 것만으로 무작위보다 훨씬 오래 버티지만, 85~95%의 판이 512에 닿기 전에 끝났습니다. 둘째, 같은 모서리 전략이라도 한 수마다 '이 방향으로 밀면 판이 뱀 모양에 가까워지는가, 새 타일은 어디에 떨어질 수 있는가'를 따지기 시작하면 결과가 한두 단계씩 달라집니다. 사람이 둘 때도 마찬가지입니다. 방향 규칙은 뼈대이고, 두세 수 앞을 그려 보는 습관이 2048을 만듭니다.

흔한 실수

  1. 급하게 연타하기. 특히 휴대폰에서 스와이프를 연달아 하면 의도하지 않은 방향이 섞여 모서리가 빠지기 쉽습니다. 되돌리기가 없으니 한 번 빠진 모서리는 돌이키기 어렵습니다.
  2. 눈에 띄는 쌍부터 합치기. 합칠 수 있는 쌍이 여러 개면 큰 타일 쪽으로 연쇄가 이어지는 쌍을 먼저 고르세요. 윗줄의 작은 쌍을 합치느라 바닥 줄을 흔드는 것은 손해입니다.
  3. 바닥 줄의 빈칸을 옆에서 메우기. 앞의 그림처럼 바닥 줄의 빈칸을 →로 메우려 하면 모서리가 빕니다. 빈칸은 위에서 내려 채웁니다.
  4. 큰 타일 두 개를 따로 키우기. 512가 서로 떨어진 두 곳에서 자라면 둘을 붙이기 어렵습니다. 두 번째로 큰 타일은 가장 큰 타일 바로 옆에서 키웁니다.
  5. 기준 모서리를 바꾸기. 판이 답답하다고 모서리를 옮기면 지금까지 쌓은 순서가 모두 무너집니다.

연습 방법

  • 1024까지는 방향 두 개만 써 보기. ←와 ↓만으로 버틸 수 있는 데까지 가 보고, 정말 막혔을 때만 →를 씁니다. 모서리를 지키는 감각이 빨리 잡힙니다.
  • 한 판에 한 가지만 신경 쓰기. 어떤 판은 '바닥 줄 가득 채우기'만, 다음 판은 '큰 수 옆에 다음 큰 수'만 지켜 보는 식으로 나눠 연습하면 무엇이 판을 망치는지 보입니다.
  • 밀기 전에 빈칸 세기. 이 방향으로 밀면 빈칸이 몇 개 남고, 새 타일이 어디에 떨어질 수 있는지 세어 보는 습관을 들이세요. 빈칸이 하나뿐인 순간에는 새 타일의 위치를 정확히 알 수 있습니다.
  • 점수보다 최대 타일을 목표로. 점수는 최대 타일을 따라오므로, 처음에는 512, 다음은 1024처럼 최대 타일을 목표로 잡는 편이 실력이 느는 것을 확인하기 쉽습니다.

정리

2048의 핵심은 가장 큰 타일을 한 모서리에 박아 두고, 그 옆으로 큰 수부터 차례로 뱀처럼 이어 붙이는 것입니다. 주로 두 방향을 쓰고, 세 번째 방향은 바닥 줄이 가득 찼을 때만, 네 번째 방향은 마지막 수단으로 남겨 두세요. 새 타일은 빈칸 중 무작위 한 곳에 2(90%)나 4(10%)로 생기므로, 빈칸을 뱀의 꼬리 쪽에 모아 두면 새 타일이 태어날 곳을 통제할 수 있습니다. 방향 규칙만으로는 512를 넘기기 어렵고, 매 수마다 두세 수 앞을 그려 보는 습관이 2048로 가는 길입니다. 읽은 내용은 2048에서 바로 연습해 볼 수 있습니다.

참고 자료

도움이 됐다면 공유해 주세요

글쓴이

Bob

개발자로 일하면서 경제 지표와 시장 데이터를 직접 찾아보고 정리해 왔습니다. 공식 통계와 1차 자료를 기준으로, 처음 보는 사람도 흐름을 따라올 수 있게 씁니다.

운영 원칙 보기

게임 공략

27편
  1. 2048 모서리 전략과 뱀 모양 배열지금 읽는 글
  2. 지뢰찾기 1-2-1 패턴과 확률 계산
  3. 스도쿠를 찍지 않고 푸는 기본 기법
  4. 숫자야구는 몇 번 만에 맞힐 수 있을까
  5. 오목 열린 3과 4-3 공격, 첫 수와 금수 정리
  6. 솔리테어 잘 푸는 습관 다섯 가지
  7. 사과 게임, 짝부터 지울까 크게 묶을까
  8. 블록 쌓기, 4줄 한 번에와 연속 지우기 중 무엇이 점수가 클까
  9. 블록 끼우기에서 오래 버티는 배치
  10. 벽돌깨기, 패들 어디에 맞히느냐가 점수를 가릅니다
  11. 버블 팡, 터뜨리기보다 떨어뜨리기가 큰 이유
  12. 파닥파닥 비행, 틈 가운데보다 어디를 노려야 할까
  13. 과일 합치기에서 어디에 떨어뜨려야 점수가 오를까
  14. 보석 맞추기, 아래부터 맞추면 정말 점수가 오를까
  15. 동네 가게 키우기, 회수 기간 순서로 사면 얼마나 빨라질까
  16. 카드 짝 맞추기 어려움 판을 24번 안에 끝내려면
  17. 도시 방어, 탄두보다 얼마나 앞을 찍어야 할까
  18. 네모로직을 찍지 않고 푸는 줄 읽기 기법
  19. 가격 정하기 10일에서 이익이 가장 큰 가격 찾기
  20. 반응속도 테스트, 찍어서 누르면 왜 손해일까
  21. 길 건너기에서 오래 살아남는 법, 봇 2,000판으로 비교
  22. 색 순서 기억하기, 10단계를 넘기는 끊어 외우기
  23. 숫자 밀기 퍼즐 윗줄부터 맞추는 법과 마지막 두 장
  24. 스네이크, 먹이로 곧장 갈까 판을 돌까
  25. 우주 방어, 바깥 열부터 없애면 시간이 얼마나 벌릴까
  26. 탑 쌓기 퍼펙트 타이밍 오차와 층수
  27. 두더지 잡기, 점수는 몇 마리보다 연속이 가릅니다