코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import math
 
def solution(brown, yellow):
 
    def cal(num):
        temp = []
        for i in range(1int(math.sqrt(num)) + 1):
            if num % i == 0:
                y = num // i
                temp.append([y, i])
        return temp
 
    answer = []
    result = cal(yellow)
    for x, y in result:
        if brown == (x + 2 + y) * 2:
            return [x + 2, y + 2]
    return answer
 
 
print(solution(2424))
cs

solution(24, 24) 기준 temp = [[24, 1], [12, 2], [8, 3], [6, 4]]

넓이가 yellow가 될 수 있는 모든 경우의 수를 담은 temp를 반환하는 cal함수를 만들었다.
int(math.sqrt(num)) + 1는 자주 사용하는 방식이니 꼭 숙지하자.

내부 사각형 yellow의 가로 길이는 x, 세로 길이는 y이다.
이 (x, y) 조합을 하나씩 확인하여 brown이 될 수 있는 조건을 충족시키는 (x, y)를 찾고, 찾으면 +2 씩 한 값을 반환해준다.

'알고리즘 문제풀이 with 파이썬 > 프로그래머스' 카테고리의 다른 글

[구현] 프렌즈4블록  (0) 2021.10.27
[DFS] 네트워크  (0) 2021.10.10
[정렬] H_Index  (0) 2021.10.09
[해시] 베스트앨범  (0) 2021.10.08
[해시] 위장  (0) 2021.10.04

+ Recent posts