본문 바로가기

Algorithm/프로그래머스

[프로그래머스] Lv.2 카펫

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

1. 해결방법

a(가로의 길이)와 b(세로의 길이)를 가지고 주어진 조건들을 가지고 공식을 만들어보면 다음과 같습니다.
위 조건들을 조건문을 이용하여 계산해주면 됩니다.

 

 

2. 정답코드

def solution(brown, yellow):
    answer = []
    total = brown + yellow
    for col in range(3, total + 1):
        row = total // col
        if (row * col) == total and row >= col and (row - 2) * (col - 2) == yellow:
            answer = [row, col]
    return answer
위 사진의 공식을 알아채기에는 너무 실력이 부족하다..
그래서 현실적인 방법으로 접근을 했다. 노란 격자는 무조건 갈색 격자 안에 있기때문에 가로 길이를 brown - 2로 if문을 만들었고, col을 3으로 잡고 total을 나누어서 row값을 구하였다.

물론 혼자 스스로는 풀지 못했지만 이해만 한다면 쉽게 풀 수 있는 문제이다.