알고리즘/프로그래머스문제풀이

[Python/프로그래머스]카펫_완전탐색

개발자 덕구🐾 2022. 6. 16. 14:47
728x90

 

 

 

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

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

 

 


 

 

 

(가로 - 2) * (세로 - 2)  = yellow 라는 것을 그림을 그려서 생각해보면 알 수 있다. 

 

 

 

 

코드 : 

def solution(brown, yellow):
    
    s = brown + yellow 
    for i in range(s,2,-1) : # s에서 2 이전까지 -1씩 감소시키며 i를 구한다.
        if s%i == 0: # i 가 가로일 수 있다. 
            a = s // i # 세로를 구하고 
            if yellow == (i-2) * (a-2) : # 공식을 만족하면
                return [i,a] # [가로, 세로] 를 반환

 

s는 전체 면적 

 

i 는 가로의 길이 

 

a 는 세로의 길이 

 

 

 

i는 가로의 길이를 의미하고 가로는 세로보다 크다. 

s에서 1씩 감소하면서 내려오므로 i는 큰수부터 감소하므로 위의 조건에 적합하다.

 

 

brown이 8이상이니까 적어도 3*3이라는 의미이다. 그래서 range는 2까지 내려오지않아 최소 3이다. 

 

 

 

 

 


 

 

참고 블로그  : 

https://it-garden.tistory.com/361

 

[프로그래머스 Level 2] 카펫 - 파이썬(Python)

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

it-garden.tistory.com

 

복습 : 

20220621

✅ 20220623

✅ 20220625

✅ 20220626

반응형