백준-1041-주사위(파이썬)

post-thumbnail

문제이해

  • 동일한 주사위를 N^3개 가지고 있다. 이 주사위를 적절히 회전시키고 쌓아서 NxNxN크기의 정육면체를 만들려고 한다.
  • 탁자위에 있으므로 5개의 면만 보이는데, 5개의 면에 쓰여 있는 수의 합의 최솟값을 구하라.
  • N이 2라면 주사위는 8가 있는 것이다. 2x2x2 주사위는 한 면당 주사위 4개면이 모인 것이다. 즉, 한 명당 보이는 주사위는 NxN개가 되는 것이다.

문제생각

  • 일단 5개의 면에 쓰여 있는 수의 합을 최소로 하려면 원래 주사위의 최대값이 바닥을 가게 해야하지 않을까?라는 생각을 해본다. 너무 당연하다.ㅋㅋㅋㅋㅋ
  • 문제를 자세히 보니 A, B, C, D, E, F의 순서가 명시되어 있다.
  • 입력도 위의 순서 이다.
  • N이 2보다 클 경우 겉 주사위 말고 내부 주사위도 발생한다.
    • 겉 주사위 중 윗 모서리 주사위는 3면, 아래 모서리 주사위는 2면이 보인다.
    • 겉 주사위 중 모서리 주사위 사이에 있는 주사위는 맨 아래 줄 주사위를 제외하면 2면이 보인다. 맨 애래 줄 주사위는 1면이 보인다.
    • 내부 주사위 들은 한면만 보인다.
  • N이 2인경우 윗 주사위는 3면, 아래 주사위가 3면이 보인다.
  • 각 위치에서 주사위의 개수를 구하여 가장 작게 보일 수 있는 배치를 정답에 더해 준다면 답이 나오지 않을까 생각한다.

  • 윗 모서리 주사위의 개수는 N과 관계없이 4개이고 아래 모서리 주사위의 개수 또한 4개이다.
  • 아래 사이 주사위는 4(N-2), 나머지 사이 주사위는 8(N-2)
  • 내부 주사위는 5x((N-2)x(N-2))

  • 내부 주사위들은 가장 작은 수가 밖을 보도록 한다.
  • 세면의 합 중 최소값 구하기
  • 두 면의 합 중 최소값 구하기

문제코드


세면을 보는 경우, 두면을 보는 경우에서의 최소값을 구하여 계산하였다.

0개의 댓글