(C++) 백준 17136 전깃줄

mnaz·2021년 12월 15일

처음에는 가장 큰 색종이를 사용하는것이 최소가 아닌가? 하고 5*5인 색종이부터 찾아가서 한번만 찾는다고 생각했는데, 가장 큰것을 쓰는것이 최소가 아닌 반례가 존재한다.(https://www.acmicpc.net/board/view/45997)

따라서, 문제에서는 가능한 모든 경우의 수를 따져 최소값을 구해야 한다.

  • 배열을 사용해서 문제를 푸는 경우 (0,0)부터 (N-1,N-1) 까지 0...N*N-1의 순서를 부여해서 문제를 푸는 경우가 왕왕 있다.
    이 경우 특정 위치를 k라 할때 x,y의 위치를 x = k/n y = k%n 와 같이 표현할 수 있다.
  • 해당 문제에서는 0번부터 시작해서 색종이로 덮을 수 있는 조건(배열 값이 1)에 모든 경우(1x1, 2x2 ...5x5)를 따져본 다음에 그 다음 위치로 넘어간다.

0개의 댓글