Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
문제 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변� www.acmicpc.net 풀이 테트로미노는 문제에서 나오는 5가지의 모형을 대칭, 회전시키면 총 19개의 고정 형태의 테트로미노가 나온다. 종이의 크기는 500이하로, 19가지의 모형을 모두 대입해서 모든 경우의 수를 구하는 게 충분히 가능하다. 이를 구현하기 위해서 (0,0)인 현재 위치로 부터 상대적인 위치를 저장한 int tetrominoModel[19][3][2] 가 필요한다. 1 2 3 4 5 6 7 8 ..
문제 www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 풀이 모바일 게임으로 많이 해봤을 법한 2048게임을 구현하는 문제이다. 블록들은 네가지 방향중 한 방향으로 모두 이동 시키는데, 이때 같은 크기의 블록이 있다면 합쳐지면서 두배의 수가 된다. 또한 구현에서 중요한 것이 현재의 이동을 통해 이미 한번 합쳐진 블록은 또 다시 합칠 수가 없다. 이 점을 유의하며 구현해보자. 일단은 네가지 방향중 왼쪽으로 이동시키는 경우를 구현한 M..
지금까지 배운 객체지향 언어는 Java와 C++ 이였는데, 필자는 C++를 먼저 접하고 Java를 공부했었다. 두 언어는 지향점이 다르더라도 둘 다 C언어 기반의 객체지향 언어라 비슷한 구조가 많다. 그런데 웬걸? 두 언어를 왔다 갔다 공부하다 보니 c++에서 계속 이해가 되지 않는 코드가 있었다. 아래의 예제 코드를 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; class Test{ public: Test(int n): data(n){} Test(const Test& rhs){ //복사 생성자 data = rhs.data; //rhs의 private멤버인 data접근이 가능하다..