programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
def solution(brown, yellow):
x = yellow
while True:
y = yellow / x
if brown == 2 * (x+y+2) and x >= y:
return [x+2, y+2]
x -= 1
x, y 는 yellow의 가로, yellow의 세로다.
x의 초기값은 최댓값인 yellow로 한다.(y가 1일 때 x는 최대가 되는데, 이때 x의 값은 yellow)
while 문에서 확인해야 될 조건은 2개다.
- 2 * (x+y+2)가 brown 값이랑 동일한가?
- x 가 y값 이상인가?
def solution(brown, yellow):
for col in range(1, int(yellow ** 0.5) + 1):
if yellow % col == 0:
row = yellow // col
if brown == 2 * (row + col + 2):
return [row + 2, col + 2]
yellow의 가로를 row, 세로를 col이라고 했을 때, col의 범위는 1이상 yellow의 제곱근 이하가 된다.
해당 범위를 이용해 row를 찾고 col, row가 조건을 만족한다면 정답을 구할 수 있다.
조건은 아래와 같다.
brown = (row + 2) * (col + 2) - (row * col)
brown = 2 * (row + col + 2)
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스-탐욕법] 조이스틱_파이썬 ❌❌ (0) | 2021.03.20 |
---|---|
[프로그래머스-탐욕법] 체육복_파이썬 (0) | 2021.03.19 |
[프로그래머스-완전탐색] 소수 찾기_파이썬 ❌⭕(에라토스테네스의 체) (0) | 2021.03.19 |
[프로그래머스-완전탐색] 모의고사_파이썬 (cycle 활용) ❌⭕ (0) | 2021.03.18 |
[프로그래머스-정렬] H-Index_파이썬 ❌⭕ (0) | 2021.03.18 |