[programmers] 프로그래머스 Level2 카펫
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
1) 문제
2) 코드
(1)
1
2
3
4
5
6
7
8
9
10
11
|
def solution(brown, yellow):
for a in range(1, 2502) :
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(1, 2502) :
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
'*Algorithm > Programmers_Level2' 카테고리의 다른 글
[programmers] 프로그래머스 Level2 기능개발(파이썬 Python) (0) | 2021.07.20 |
---|---|
[programmers] 프로그래머스 Level2 프린터(파이썬 Python) (0) | 2021.05.09 |
[programmers] 프로그래머스 Level2 타겟 넘버 (파이썬 Python) (0) | 2021.04.24 |
[programmers] 프로그래머스 Level2 행렬의 곱셈(파이썬 Python) (0) | 2020.11.19 |
[programmers] 프로그래머스 Level2 다음 큰 숫자(파이썬 Python) (0) | 2020.11.18 |
댓글