스터디/코딩테스트

python 코딩테스트 - 프로그래머스 카펫

공대생철이 2023. 11. 12. 22:37
728x90

출처 : 프로그래머스

처음 든 생각

- 이건 수학적으로 접근하는 게 맞다

- 테두리 식과 내부의 타일 개수를 세서 가로 세로를 구하는 다항식을 세워서 연립해야겠다

 

나의 답

import math
def solution(brown, yellow):
    plus = (brown+4)/2
    multi = yellow - 4 + 2 * plus
    answer = []
    for i in range(math.floor(multi**(1/2))+1):
        if i * (plus - i) == multi:
            answer.append(i)
            answer.append(plus-i)
    answer.sort(reverse=True)
    return answer

brown을 통해서 가로 + 세로의 값을

yellow를 통해서 가로 * 세로의 값을 구한다.

 

그 다음 두 개의 식을 연립방정식으로 놓고 푸는 코드를 작성한 것이다.

곱의 값을 기준으로 제곱근 부근까지 반복문을 돌면서 실제 곱의 결과와 비교를 한다.

 

문자 2개, 식 2개인 연립 방정식의 해는 유일하므로 정답 리스트에 들어가는 해는 오직 한 쌍이다.

가로가 세로의 길이와 같거나 더 길다고 했으므로 내림차순 정렬만 해주면 끝이다.

 

머리로 암산해서 식 세우기는 좀 어려웠으나 종이에다가 직접 그려보니 연립방정식을 세우는 과정이 간단해서 굉장히 쉽게 풀렸다.

 

728x90