Algorithm/Problems

99클럽 코테 스터디 21일차 TIL + 완전탐색

공부좀하시졍 2024. 11. 17. 16:42

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

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까지 사용됐을 때의 최종적인 가로, 세로 길이를 알 수 있다.