728x90
풀이
import math
def solution(brown, yellow):
answer = []
length = 0
for i in range(1, math.trunc(math.sqrt(yellow)) + 1):
for y in range(1, i + 1):
if y * (brown/2 - 2 - y) == yellow:
length = y
break
answer.append(brown / 2 - length)
answer.append(length + 2)
return answer
내 풀이
answer에 들어갈 가로, 세로 길이는 각각 yellow 가로 + 2, yellow 세로 + 2이다. 따라서 yellow의 가로, 세로 길이를 알면 답을 구할 수 있다.
yellow 가로 = x, yellow 세로 = y라고 하면,
x * y = yellow 타일 수, 2(x+1) + 2(y+1) = brown 타일 수가 된다.
따라서 연립 방정식을 세우면,
- x * y = yellow
- x + y = brown/2 - 2
이다.
yellow가 되는 x, y 쌍을 찾기 위해 우선 y부터 찾는다.
y는 yellow의 제곱근보다 작으므로(가로>=세로) math.sqrt(yellow) + 1까지 반복문을 돈다. 소수점을 제거하기 위해 math.trunc도 사용한다.
다음으로 x는, x = brown/2 - 2 - y이므로 y * (brown/2 - 2 - y) = yellow일 때를 찾는다.
x, y 쌍을 찾으면 answer에 append해서 답을 반환한다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 피로도 (python) (1) | 2024.01.24 |
---|---|
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 소수찾기 (python) (0) | 2024.01.23 |
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 모의고사 (python) (0) | 2024.01.17 |
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 최소직사각형 (python) (0) | 2024.01.17 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 베스트 앨범 (python) (0) | 2024.01.15 |