🗂️ 문제
링크: https://school.programmers.co.kr/learn/courses/30/lessons/42842
💡 접근법
return되는 값의 행과 열을 곱하면 brown+yellow가 된다. 따라서 행과 열의 값은 brown+yellow를 소인수분해한 값이다. 따라서 두 개의 수로 이루어지도록 소인수 분해를 수행하고 그 쌍들을 prime_list에 저장한다.
이후 소인수분해 쌍을 for문으로 돌면서 brown과 yellow 개수를 만족하는 조건에 해당하는 소인수가 answer이 된다. 여기서 brown과 yellow 개수를 만족하는 방정식은 다음과 같다.
- brown = 2*x + 2*y - 4
- yellow = x*y - 2*x - 2*y + 4
😎 내 코드
def solution(brown, yellow):
answer = []
# 소인수 구하기
primes = brown + yellow
prime_list = []
for p in range(1, primes):
if primes % p == 0:
prime_list.append((p, primes//p))
for x, y in reversed(prime_list):
if 2*x + 2*y - 4 == brown and x*y - 2*x - 2*y + 4 == yellow:
answer.append(x)
answer.append(y)
break
return answer
'Algorithm > Programmers' 카테고리의 다른 글
[완전탐색] 프로그래머스 Lv2. 피로도 - Python (0) | 2024.03.24 |
---|---|
[완전탐색] 프로그래머스 Lv2. 소수 찾기 - Python (0) | 2024.03.21 |
[완전탐색] 프로그래머스 Lv1. 모의고사 - Python (0) | 2024.03.19 |
[정렬] 프로그래머스 Lv.2 가장 큰 수 - Python (2) | 2024.03.16 |
[힙] 프로그래머스 Lv2. 더 맵게 - Python (0) | 2024.03.07 |