1. 개요

2048은 19세의 젊고 재능넘치는 이탈리아 청년 '가브리엘'의 작품.

기존의 게임 1024의 변형판으로 큰 성공을 이룸.


이 클래스를 설계하게된 이유는 코드를 작성할 때, 자신이 생각한 바를 명료하게 작성할 수 있는지.

그리고 예외처리를 모두 찾아서 코드를 작성했는지 스스로 점검하기에 무척 좋은 문제라서 작성했다.


다음은 규칙이다.

총 4가지 연산, LEFT, RIGHT, UP, DOWN이 있고, 그 내부의 규칙은 다음 그림과 같다.



위의 그림은 나무위키에서 가져온 그림으로, RIGHT 연산 수행을 보여준다.

마찬가지로 LEFT, RIGHT, UP, DOWN 모두 위의 규칙처럼 수행이 가능하여야 한다.


LEFT와 RIGHT의 연산은 연산 시작과 끝 범위만 반대이다.

UP과 DOWN도 마찬가지이다.


LEFT와 UP의 연산은 인덱스의 위치만 반대이다.

RIGHT와 DOWN도 마찬가지이다.


즉, 결국 한 방향으로 값을 밀어낸다는 반복된 기능들이기에 코드를 짧게 작성하고 싶으면

4개 코드 다 작성하지 않고 하나의 코드로 압축할 수 있겠지만 명료함을 위해서 모든 기능을 다 나누었다.



2. 문제

게임 2048의 기능을 구현 클래스를 구현하시오.

(이 기능을 가지고 최소 Depth 7의 모든 경우를 검사하는데 걸리는 시간이 3초 이내)


3. 전체코드 및 출력

3-1) 클래스 설계


3-2) 클래스 구현


3-3) LEFT, RIGHT, UP, DOWN 출력


3-4) Depth 7까지 소모 시간 출력



4. 소감

아쉽다.

조금만 더 명료한 사고를 가졌으면, 1시간 반 안에 충분히 작성할 수 있었는데.


그래도 또 어디가 부족한지 알았고, 어디를 지향해야하는지 알았으니까 좋다.

더 정진하자.


결국 초반 설계를 얼마나 빈틈없이 꼼꼼히하고, 설계가 끝나면 코드에 실수없이 명료하게 작성하는 것이 진짜 실력.



+ Recent posts