이 문제는 보통 방정식을 써서 많이 푸는 것 같다. 코딩에 방정식을 쓴다는 생각을 못해서 어떻게 풀어야 할까 고민을 많이 했다. 앞으로는 수학적인 방식도 고려를 해야겠다..
https://velog.io/@seulki971227/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.2-%EC%B9%B4%ED%8E%AB-Python
위 블로그의 아이디어를 벤치마킹했다.
여담이지만, 근데 진짜 "완전탐색"문제는 아닌 것 같다. 프로그래머스에는 가끔 문제 설명이 부족한 경우나 문제 분류가 이상한 경우도 있는 것 같다.
def solution(brown, yellow):
answer = []
x_yellow = 0
y_yellow = 0
for i in range(1, yellow+1):
if yellow % i == 0:
x_yellow = yellow // i
y_yellow = i
if (2*x_yellow + 2*y_yellow + 4) == brown:
answer.append(x_yellow+2)
answer.append(y_yellow+2)
# 브레이크 안하면 x,y 바뀐 값이 반복문으로 또 들어옴
break
return answer
break가 필요한 이유는 가로와 세로 값을 구해서 answer에 가로 세로 값이 들어간 이후에 가로 세로 값이 반대로 바뀐 경우에 if문을 두개 다 통과하기 때문에 두 값이 바뀐 경우도 answer에 들어가야 한다.
위 링크에 있는 게시글처럼 sort를 해줄 필요는 없다. 애초에 y가 더 짧은 값이 들어간 경우가 먼저 answer에 추가해주기 때문이다.