n개의 행과 m개의 열이 있는 그리드로 분할된 바닥이 있다고 가정합니다. 이제 램프를 사용하여 바닥을 밝혀야 합니다. 램프를 두 셀의 경계에 배치하면 두 셀을 밝힐 수 있습니다. 램프를 세로 테두리에 놓으면 셀의 왼쪽과 오른쪽을 밝게 하고 가로 테두리에 놓으면 셀을 앞뒤로 비춥니다. n과 m이 주어지면 전체 바닥을 밝히는 데 필요한 최소 램프 수를 찾아야 합니다.
따라서 입력이 n =5, m =3과 같으면 출력은 8이 됩니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
res := (n * m + 1) / 2 return res
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <bits/stdc++.h> using namespace std; #define N 100 int solve(int n, int m) { int res = (n * m + 1) / 2; return res; } int main() { int n = 5, m = 3; cout<< solve(n, m); return 0; }
입력
5, 3
출력
8