코딩 테스트
[python3] 프로그래머스 레벨 2 - 카펫
귀건
2021. 6. 15. 01:02
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/42842?language=python3
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
# 최종답안
def solution(brown, yellow):
answer = []
ver_hor_sum = (brown // 2) + 2
sum_ = brown + yellow
for i in range(1, ver_hor_sum):
hor_ = i
ver_ = ver_hor_sum - i
if ver_ >= hor_ :
if ver_ * hor_ == sum_:
answer.append(ver_)
answer.append(hor_)
return answer
사각형 모양의 카펫에 가장 바깥쪽 테두리 한줄은 갈색, 나머지 안쪽은 노란색인데, 각 색의 타일 갯수를 주고 카펫에 대한 가로, 세로 길이를 구하는 문제.
필자는 이 문제를 나름(?) 수학적으로 생각해보았음.
문제의 타일 -> 갈 10, 노 2
이 경우 가로는 4, 세로는 3임. 총 12개
즉 가로 * 세로 = 갈색 + 노랑 = 12 이라는 식을 하나 얻을 수 있음.
갈색은 가장 바깥쪽 테두리이므로, 가로 + 가로 + 세로 + 세로 - 4(중복해서 더해진 부분) = 갈색의 타일 개수 임을 확인할 수 있음.
그래서 가로 + 세로 = 갈색/2 + 2 라는 식을 얻게 됨.
가로는 세로보다 더 크다는 조건이 있으므로
총 개수에서 하나씩 줄여가며 조건을 비교하면 쉽게 답을 찾을 수 있었음.
728x90
반응형