문제
2858번: 기숙사 바닥
첫째 줄에 상근이네 방의 크기 L과 W을 공백으로 구분하여 출력한다. 만약, 두 수가 다르다면, 큰 수가 L이 되고 작은 수가 W이 된다. 항상 정답이 유일한 경우만 입력으로 주어진다.
www.acmicpc.net
풀이
- 브루트 포스, 완전탐색
- 공식 도출을 해야 한다
빨간색 타일의 수(R)은 8이상이고, 갈색 타일의 수(B)는 1이상이기 때문에, 방의 크기는 최소 3*3이다.
방의 크기가 3*3일 경우에, 빨간색 타일의 수(R)는 R = (3*2) + (3-2)*2 가 된다
방의 크기가 3*3일 경우에, 갈색의 타일의 수(B)는 B = (3-2)*(3-2)이다
방의 크기가 4*3일 경우에 빨간색과 갈색 타일의 수는 다음과 같이 된다.
따라서 빨간색 타일의 개수는 i*2 + (j-2)*2 , 갈색 타일의 개수는 (i-2)*(j-2)가 된다.
코드
r, b = map(int, input().split())
l, w = 0, 0
for i in range(3,3000):
for j in range(3,3000):
if i*2 + (j-2)*2 == r and (i-2)*(j-2) == b:
l , w = i, j
break
if l != 0:
break
if w > l:
l, w = w, l
print(l, w)
'코딩테스트 > BOJ' 카테고리의 다른 글
[파이썬/백준] 3040번: 백설 공주와 일곱 난쟁이 (Python) (0) | 2021.04.14 |
---|---|
[파이썬/백준] 1688번: 트로피 진열 (Python) (0) | 2021.04.13 |
[Python/백준] 2798번: 블랙잭 (Python) (0) | 2021.04.12 |
[백준/파이썬] 14697번: 방 배정하기 (Python) (0) | 2021.04.11 |