16985. Maaaaaaaaaze

·2025년 10월 24일

백준 알고리즘

목록 보기
285/325

젠장할 문제

  • 순열
  • 중복 순열
  • bfs
  • 구현 : 90도 회전.

주의할점.

  • 3차원 배열로 bfs를 하고 있는데 매번 초기화를 해야 한다.
    -> 나는 vector로 만들었고, fill 하려고 하므로,
    이렇게 해야 한다.

3차원 배열 fill 사용.

젠장. 집중력이 떨어졌다.

  • 조건 처리 잘못 작성함.

90도 시계 회전은

  • 주석 작성하면서 규칙성을 찾자.

시간복잡도와 문제 분석

  • 1) 층에다가 5개의 판을 놓아야 한다.
    -> 시간복잡도는 5!

  • 2) 판을 돌려야 한다. 4개의 판으로 형상화할 수 있다.
    => 5개의 판이 있기 때문에 5의 4승

  • 3) 생각해보기.

  • 가) 각 판을 돌릴 때 맨 위의 판을 보면, 돌리지 않고, 아래 판안돌린 상태에서 진행.

  • 나) 각 판을 돌릴 때 맨 위의 판 1번를 돌리고, 아래 판안돌린 상태에서 진행.

  • 다) 각 판을 돌릴 때 맨 위의 판을 2번 돌리고, 아래 판안돌린 상태에서 진행.

  • 라) 각 판을 돌릴 때 맨 위의 판을 3번 돌리고, 아래 판안돌린 상태에서 진행.

  • 마) 각 판을 돌릴 때 맨 위의 판을 4번 돌려서 원상태로 만들자., 2번째 판을 한번 돌린다.

  • 바) 각 판을 돌릴 때 맨 위의 판을 1번 돌리자., 2번째 판을 한번 돌린 상태를 유지

=> 즉 중복 순열 형태이다.

  • 5) bfs 이므로 n의 3제곱이다.

  • 6) 회전하는 거는 n제곱이므로 25이다.

시간복잡도는?

  • 5! X 4의 5승 X 5의 3승 => 15000000 이다.

핵심은

  • 각 한개의 판을 회전하는 것은 포함되지 않는다.
    -> 스코프의 빠져나오기 전에 회전을 하는 구조이므로, 중첩되는 상황이 아니기 때문에 시간복잡도에 포함되지 않는다.

코드

  • 중첩된 상황에서 회전을 하지 않기 때문에 시간복잡도 포함되지 않는다.

  • 마지막 코드

profile
🔥🔥🔥

0개의 댓글