그냥 하는 노트와 메모장

BOJ 5213 - TOTEM (과외맨) 본문

Solved problems

BOJ 5213 - TOTEM (과외맨)

coloredrabbit 2018. 7. 2. 21:30

* BOJ 5213 - TOTEM (과외맨)

  [ 분류 - BFS,DFS / 기타 최단경로 알고리즘 ]


  주어진 문자들을 어떻게 노드로 정의할 것이며, 어떻게 자료구조를 설정할 것인지 물어보는 문제.


  단순 최단경로 알고리즘을 사용한다면 별다를 문제는 없다.


  문제에서는 타일은 두 개의 숫자로 이루어진다. 두 개의 숫자는 각자 '칸'을 의미하며 최대가 6이다. 인접한 타일과 같은 숫자로 접점이 있다면 두 타일은 이어져 있다고 볼 수 있다.




  * 접근 방식

  1. 각 타일은 2개의 칸이고, 각 칸의 최대가 6이므로 두자리 수 하나로 퉁칠 수 있다.


  2. 입력으로 주어지는 순서는 맨위 좌측 타일부터 맨 아래 우측 타일까지를 주어주므로 indexing 절차가 필요함을 알 수 있다. 즉, 단순 2차원 배열로 두고 접근할 수 없으므로, offset(각 행에 대한 열의 수)을 두어 처리할 수 있다.


  3. 2.번까지 완료했다면 이제 인접하는지 알아내기 위해 타일에 해당하는 수에 대해 처리한다.

    3-1. 현재 타일과 좌측 아래 타일 그림에서의 (1)

    3-2. 현재 타일과 우측 아래 타일 그림에서의 (2)

    이 과정에서는 좌측 또는 우측 아래 타일이 없을 수 있으므로 범위 확인을 반드시 해야한다.

    3-1과 3-2는 수 비교이기 때문에 상수 시간에 판단이 가능하다.



- 코드


'Solved problems' 카테고리의 다른 글

BOJ 3987 - VOYAGER (보이저 1호)  (0) 2018.07.03
BOJ 6084 - Laserphones (레이저 통신)  (0) 2018.07.02
BOJ 1765 - The Gangs  (0) 2018.06.30
BOJ 3964 - 팩토리얼과 거듭제곱  (0) 2018.06.30
BOJ 1103 - 게임  (0) 2018.06.24
Comments