2048

https://www.acmicpc.net/problem/12100

삼성 기출문제이다. DFS 문제이다. 블록을 이동하는 것이 어려운 문제였다.

풀이

블록을 5번 이동 시키는 것은 다음 그림과 같이 DFS로 구현한다.

문제의 핵심은 블록을 이동하는 것이다. 블록 이동을 구현하기 위해 Queue를 사용한다.

Read more

https://www.acmicpc.net/problem/3190

삼성 기출문제이다. 쉬운 문제였다.

풀이

핵심은 뱀의 이동 흔적을 남기는 것이다. 이를 위해, Queue를 사용하였다.

  • 뱀이 머리만 이동할 경우

    • 이동할 위치를 Enqueue
  • 뱀이 완전히 한 칸 이동할 경우

    • 뱀의 시작점(Queue에 가장 먼저 Enqueue된 요소)을 Dequeue
Read more

시험감독

https://www.acmicpc.net/problem/13458

삼성 기출문제이다. 매우 쉬운 문제였다.

풀이

문제에서 주어진 대로 풀면 된다.

처음에 틀렸다.

ans 변수를 int로 선언하였을 때는 틀렸다고 나온다.

long 형으로 선언하였더니 맞았다.

코드

Read more

주사위 굴리기

https://www.acmicpc.net/problem/14499

삼성 기출문제이다. 쉬운 문제이다. 문제 이해만 잘 하면 된다.

풀이

문제의 핵심은 주사위를 ‘옮기는 것’ 아니라, ‘굴리는 것’이다.

다음 그림과 같이 처음 상태에서 동, 서, 북, 남으로 굴림에 따라서 방향에 대한 값이 바뀐다.

회전하고 문제에서 주어진 대로 풀면 된다.

Read more

사다리 조작

https://www.acmicpc.net/problem/14499

삼성 기출문제이다. DFS 문제이다.

어려웠다. 해설을 보고 이해를 했지만, 직집 해결해보기 위해 며칠 동안 붙잡고 있던 문제이다.

풀이

  1. 사다리를 어떻게 코드로 표현해야 하는지 파악한다.
  2. 사디리는 어디에 둘 수 있는지 파악한다.
  3. 탐색을 어떻게 진행할지 생각한다.

사다리를 코드로 표현하는 방법은 다음 그림과 같이 이차원 배열을 이용한다. 사다리를 1과 2로 표현한다.

사다리를 둘 수 있는 곳의 조건은 다음과 같다.

  1. i행의 j번째의 값과 j+1번째의 값이 0 : 연속되지 않고, 사다리를 둘 수 있는 빈 칸 이라는 의미
  2. j+1<=n : 동일한 행에 사다리를 둘 수 있다는 의미
Read more