본문 바로가기
*Algorithm/Programmers_Level2

[programmers] 프로그래머스 Level2 카펫(파이썬 Python)

by codinguser 2021. 5. 9.

프로그래머스
(주)그렙

 

[programmers] 프로그래머스 Level2 카펫

(파이썬 Python)

 

* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제

 

 

 

1) 문제


프로그래머스 카펫 파이썬

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

 

 

 

 

 

2) 코드


(1)

1
2
3
4
5
6
7
8
9
10
11
def solution(brown, yellow):
 
    for a in range(12502) : 
 
        b = int(brown / 2+ 2 - a
 
        if (a * b) == (brown + yellow) :
            answer = [b, a]
            break
 
    return answer
cs

 

 

 

(2)

1
2
3
4
5
6
7
8
9
10
def solution(brown, yellow):
 
    for a in range(12502) : 
 
        b = int(brown / 2+ 2 - a
 
        if (a * b) == (brown + yellow) :
            return [b, a]
            
    return -1
cs

 

 

 

3) 풀이 과정


1) 전체 가로 길이를 a, 세로 길이를 b라고 가정

ㄴ> 갈색 격자의 수는? 8<=2a+2b-4(brown)<=5000

ㄴ> 노란 격자의 수는? 1<=(a-2)(b-2)(yellow)<=2,000,000

 

 

6<=a+b<=2502

b>=1 이기에,

 

a를 1부터 2501 까지 반복문 순회

 

 

갈색 수(brown) = 2a + 2b - 4 <=5000

 

 

 

< < 사고 과정 > >


 

(1)

Q) 문제에서 묻고자 하는바 확인

A) 전체 카펫의 가로, 세로의 크기를 return

 

(2)

N의 값의 범주 확인 및 조건 확인

(8<=brown<=5000, 자연수)

(1<=yellow<=2,000,000, 자연수)

 

 

 

입출력 예

 

 

6<=a+b<= 2502

를 기준으로 a를 1부터 2502까지 돌리고

b를 a의 범주에 맞게 세팅(b>=1 부터라는 전제)

 

 

Ex)

return [3,3] 기준

 

 

a 를 1부터 하면

 

 

a = 1 , b = 5 , a * b = 5  False( != 9)

a = 2, b = 4 , a * b = 8 Flase( !=9)

a = 3, b = 3, a * b = 9 정답 (==9)

 

 

 

4) 정리 노트


x

댓글