[프로그래머스_Python] 완전탐색 - 카펫 [Lv. 2]

황준성·2024년 11월 6일
0

프로그래머스

목록 보기
10/14

문제


문제 이해

이 문제는 보통 방정식을 써서 많이 푸는 것 같다. 코딩에 방정식을 쓴다는 생각을 못해서 어떻게 풀어야 할까 고민을 많이 했다. 앞으로는 수학적인 방식도 고려를 해야겠다..

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에 추가해주기 때문이다.

profile
Make progress

0개의 댓글