[백준 | 파이썬] 체스판 조각

devheyrin·2022년 2월 9일
0

codingtest

목록 보기
6/65

문제

상근이는 3003번에서 동혁이가 발견한 체스판을 톱으로 자르려고 한다.

상근이는 체스판을 최대 N번 자를 수 있으며, 변에 평행하게만 자를 수 있다. 또, 자를 때는 체스판의 그 변의 한쪽 끝에서 다른쪽 끝까지 잘라야 한다. 자른 후에는 조각을 이동할 수 없다.

이때, 최대 몇 조각을 낼 수 있는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. (1 ≤ N ≤ 100)

출력

첫째 줄에 상근이가 얻을 수 있는 조각의 최댓값을 출력한다.

예제 입력 1

1

예제 출력 1

2

예제 입력 2

3

예제 출력 2

6

Solution 1

n = int(input())
if n % 2 == 0:
    print((n//2+1)**2)
else:
    print((n//2+2) * ((n//2+2)-1))
  • 풀이 설명 그림을 그려보면 대략 다음과 같은 규칙을 찾을 수 있다. 1 2 3 4 5 6 7 8 9
    2 4 6 9 12 16 20 25 30
    21 22 32 33 43 44 54 55 6*5 문제에서 체스판은 변에 평행하게만 자를 수 있고, 변의 한쪽 끝에서 다른쪽 끝까지 잘라야 한다고 했기 때문에 잘라서 최댓값을 얻기 위해서는 가로, 세로를 번갈아가면서(교차하며) 잘라야 한다. 최대 2번 자를 수 있을 때 가로로만 2번 자르거나 세로로만 2번 자르면 조각이 3개가 되지만, 가로로 1번 세로로 1번 자르면 4개가 된다! 짝수일 때와 홀수일 때를 나누어 최댓값을 구하는 계산식을 넣어주어 코드를 완성했다.
profile
개발자 헤이린

0개의 댓글