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
'스터디 > 코딩테스트' 카테고리의 다른 글
python 코딩테스트 - 프로그래머스 행렬의 곱셈 (0) | 2023.11.14 |
---|---|
python 코딩테스트 - 프로그래머스 네트워크 (2) | 2023.11.13 |
python 코딩테스트 - 소수 찾기 (0) | 2023.11.12 |
python 코딩테스트 - 정렬 알고리즘 (0) | 2023.11.07 |
python 코딩테스트 - 베스트 앨범 (0) | 2023.11.07 |