https://school.programmers.co.kr/learn/courses/30/lessons/42842
def solution(brown, yellow):
answer = []
for row in range(1,int(yellow**0.5)+1):
if yellow % row == 0:
col = yellow // row
b = (2 * col) + (2 * row) + 4
if b == brown and col >= row:
answer = [col+2,row+2]
return answer
- 우선 yellow를 어떻게 배치하냐를 기준으로 완전탐색을 해준다.
- 이때, 1 * 24 나 24 * 1 이나 같으므로 제곱근까지만 계산해주면 된다.
- 1부터 완전탐색 하며 yellow가 나누어 떨어지는 경우만 고려해준다.
- yellow를 어떻게 배치할지 정하면 brown은 yellow의 가로길이 * 2 + yellow의 세로길이 * 2 + 4 로 배치해야한다.
- 이때 주어진 brown과 수가 같고 가로의 길이가 항상 세로의 길이보다 같거나 길어야 하므로 두 조건의 경우를 만족하는 경우로 yellow의 배치방법을 결정한다.
- 위 방법으로 yellow의 배치 방법을 정했으므로 yellow의 가로길이 + 2 , yellow의 세로길이 + 2로 brown까지 사용됐을 때의 최종적인 가로, 세로 길이를 알 수 있다.
'Algorithm > Problems' 카테고리의 다른 글
99클럽 코테 스터디 23일차 TIL + 완전탐색 (0) | 2024.11.20 |
---|---|
99클럽 코테 스터디 22일차 TIL + 완전탐색 (0) | 2024.11.19 |
99클럽 코테 스터디 20일차 TIL + 완전탐색 (0) | 2024.11.17 |
99클럽 코테 스터디 19일차 TIL + 그리디 (0) | 2024.11.16 |
99클럽 코테 스터디 18일차 TIL + 그리디 (1) | 2024.11.14 |