알고리즘/Python 코테

프로그래머스 카펫 level2

집 밖은 위험해 2023. 9. 28. 00:27

문제 링크

카펫

🤔 문제 이해 및 알고리즘 유형

알고리즘 : 완전 탐색
문제 이해 : 노란색 타일과 갈색 타일을 모두 깔았을 때 가로와 세로길이를 구하는 문제

💡 문제 해결 방법

첫번째 시도 방법
갈색 타일과 노란색 타일의 총합을 구하고 그 합의 약수를 구한 후, 가운데 값을 return
-> 가로와 세로가 중간 값이 아닌 테스트 케이스가 있었음

답지를 참고한 방법

  1. 노란 타일의 가로 세로 길이를 구하기
  2. 노란 타일의 가로 x 2 + 노란 타일의 세로 x 2 + 4 == 갈색 타일의 수 조건을 만족 할때
  3. answer 값을 return 한다. 이때 가로길이가 세로길이 보다 같거나 길으므로 정렬해줄 것!

💻 코드

  • 첫번째 코드
total = brown+yellow
    result=[]
    for i in range(1,total):
        if total%i==0:
            result.append(i)
    print(result)
    l=result[len(result)//2]
    r = total//l
    answer = [r,l]
    return answer
  • 두번째 코드(수정한 코드)
answer = []
    yellow_x =0
    yellow_y=0

    for i in range(1, yellow+1):
        if yellow% i ==0:
            yellow_x =int(yellow/i)
            yellow_y = i
            if yellow_x *2 + yellow_y*2 + 4 == brown:
                answer.append(yellow_x+2)
                answer.append(yellow_y+2)

                return sorted(answer,reverse=True)
    return answer

참고 사이트
https://iambeginnerdeveloper.tistory.com/123