백준 15700 타일 채우기 4
문제
N×M 크기의 벽에 2×1, 1×2 크기의 타일을 채우려고 한다. 겹치지 않게 놓는다면, 최대 몇 개를 채울 수 있을까?
입력
첫째 줄에 N과 M이 주어진다. (1 ≤ N, M ≤ 1,000,000,000)
출력
첫째 줄에 채울 수 있는 타일 개수의 최댓값을 출력한다.
예제 입력 1
1 2
예제 출력 1
1
예제 입력 2
1 3
예제 출력 2
1
예제 입력 3
2 2
예제 출력 3
2
예제 입력 4
3 3
예제 출력 4
4
풀이 과정
1x2 혹은 2x1 타일로 채우므로,
n, m이 둘 다 짝수이면 n과 m을 곱한 값의 절반 만큼의 타일 개수로 채울 수 있다.
n, m 둘 중 하나만 홀수이면, 홀수-1과 짝수를 곱한 값의 절반 만큼 타일로 채우고, 남은 한 줄은 짝수 만큼의 칸이 있으므로 절반으로 나눠 더한다.
n, m 둘 다 홀수이면, 무조건 한 칸이 남으므로 둘을 곱하고 하나를 뺀다. 그 절반이 타일의 수이다.
그림을 그려서 파악하면 쉽다.
코드
n, m = map(int, input().split())
result = 0
if n % 2 == 0 and m % 2 == 0: # 둘 다 짝수일 때
result = (n * m) // 2
elif n % 2 == 0 and m % 2 == 1: # n이 짝수, m이 홀수일 때
result = (n * (m - 1)) // 2 + (n // 2)
elif n % 2 == 1 and m % 2 == 0: # n이 홀수, m이 짝수일 때
result = (m * (n - 1)) // 2 + (m // 2)
else: # 둘 다 홀수일 때
result = (n * m - 1) // 2
print(result)
Author And Source
이 문제에 관하여(백준 15700 타일 채우기 4), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mynote/백준-15700-타일-채우기-4저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)