Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – n×n 보드에서 네 모서리 대각선 셀을 제거한 뒤 남은 셀 개수 세기

문제 이해하기

숫자 n이 주어지며, 이 값은 n × n 크기 보드의 한 변 길이를 나타냅니다. 우리가 해야 할 일은 네 개의 귀퉁이(모서리)에서 시작하는 대각선 방향에 놓인 모든 셀을 삭제한 후, 남아 있는 셀의 개수를 반환하는 것입니다.

예를 들어 입력이 n = 4라면 보드는 다음과 같습니다. 여기서 X는 삭제되는 셀, O는 남는 셀입니다.

XOOX
OXXO
OXXO
XOOX

삭제되는 셀은 총 8개이므로, 출력 결과는 8이 됩니다.

해결 접근 방법

이 문제는 실제로 보드를 만들어 시뮬레이션할 필요 없이, 아래의 간단한 수식 하나로 해결할 수 있습니다.

  • n*n − 2 * n + (n mod 2)

수식의 원리를 살펴보면 다음과 같습니다.

  • 보드의 전체 셀 개수는 개입니다.
  • 두 개의 대각선에는 각각 n개씩, 즉 총 2n개의 셀이 놓여 있어 이를 제거합니다.
  • 만약 n이 홀수라면 두 대각선이 정중앙 셀에서 서로 겹칩니다. 이 경우 중앙 셀이 두 번 빼지므로, (n mod 2), 즉 홀수일 때 1을 다시 더해 중복을 보정해 줍니다.

구현 예시

아래는 위 수식을 파이썬으로 구현한 코드입니다.

class Solution:
   def solve(self, n):
      return n*n - 2 * n + (n%2)
ob = Solution()
print(ob.solve(4))

입력

4

출력

8

정리

n × n 보드에서 네 모서리의 대각선 셀을 모두 제거한 뒤 남는 셀의 개수는 n² − 2n + (n mod 2)로 계산할 수 있습니다. 짝수일 경우 단순히 n² − 2n이 되고, 홀수일 경우 중앙 셀의 중복을 보정하기 위해 1을 더한다는 점만 기억하면 됩니다.