문제
https://school.programmers.co.kr/learn/courses/30/lessons/42842
내 풀이
def solution(brown, yellow):
answer = []
#가로+세로
s = brown // 2 + 2
#가로*세로
m = brown + yellow
# a>=b이고, a+b==s, a*b==m인 a,b구하기
# 약수 찾기 -> 약수 합 중에 a+b가 충족하는게 있으면 바로 break
for i in range(1, int(m**0.5) + 1):
if m % i == 0 and (m // i + i) == s:
return([m//i, i])
딴 사람 코드보고 수정한 코드
- 그림에서 수학적 규칙을 이용해서 구한거 따라해봄!
def solution(brown, yellow):
answer = []
# brown - 4 = yellow의 둘레 임을 이용
# yellow의 가로, 세로 찾음
r = brown - 4
for i in range(1, int(yellow**0.5) + 1):
#i는 세로길이
if yellow % i == 0:
if r == 2 * (yellow // i + i):
return [yellow // i + 2, i + 2]
'''
'''
'개발 > Algorithm' 카테고리의 다른 글
| [프로그래머스/87946/level2/고득점kit] 피로도 - DFS, 완전탐색 (0) | 2023.08.08 |
|---|---|
| [백준/기본기 다지기(1)] 약수 / 이진수 / 지능형 기차2 (0) | 2023.08.07 |
| [프로그래머스/42839/level2] 소수 찾기 - 에라토스테네스 체 알고리즘 사용하기 & set 장점 활용 (0) | 2023.08.07 |
| [백준/11724번/실버2]연결 요소의 개수 - 그래프 개념, DFS 사용! (4) | 2023.08.06 |
| [백준/1260번/실버 3] DFS와 BFS - 가장 기본적인 함수 (0) | 2023.08.05 |