-
[프로그래머스] 완전탐색 03. 카펫Algorithm Study/Python 2021. 3. 16. 15:29
programmers.co.kr/learn/courses/30/lessons/42842
문제설명
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
풀이
문제 설명에는 빠져있지만 이 문제는 가로가 세로보다 더 큰 경우로 가정하여 해결해야한다.
테스트 케이스에 y가 x보다 큰 경우로 생각하여 푸는 경우에는 정답으로 인정하지 않는 항목이 있기 때문이다.def solution(brown, yellow): answer = [] x = 1 while True: y = 1 while x >= y : if x*y == yellow: if 2*x + 2*y + 4 == brown: return [x+2, y+2] y += 1 x += 1
x , y 좌표를 설정하여 x*y가 노란색의 갯수와 동일하면서 (x+2) * (y+2) 의 갯수가 brown + yellow와 같은 이차방정식을 해결하면 된다.
xy + 2x + 2y + 4 = brown + yellow 고 xy = yellow기 때문에 2x + 2y + 4 = brown이라고 할 수 있다.
x , y를 1로 설정하고 x가 y보다 큰 동안 y값을 증가시키면서 일치하는 값을 찾으면 된다.'Algorithm Study > Python' 카테고리의 다른 글
[프로그래머스] 탐욕법(Greedy) 04. 구명보트 (0) 2021.03.16 [프로그래머스] 탐욕법(Greedy) 01. 체육복 (0) 2021.03.16 [프로그래머스] 완전탐색 02. 소수찾기 (0) 2021.03.16 [프로그래머스] 완전탐색 01. 모의고사 (0) 2021.03.16 [프로그래머스] 정렬 03. H - Index (0) 2021.02.23