문제 설명 👨🏻💻👩🏻💻
https://school.programmers.co.kr/learn/courses/30/lessons/42842
코드 구현 👨🏻💻👩🏻💻
- 알고리즘 종류: 완전탐색
- 시간복잡도: O(N) 아마도?
def solution(brown, yellow):
answer = []
yellow_x = 0
yellow_y = 0
for i in range (1,yellow+1): #옐로우의 갯수만큼 반복문을 돌린다
if yellow % i == 0: #옐로우의 갯수가 i로 나누어 떨어질 경우
yellow_x = int(yellow / i) #옐로우를 i로 나눈 몫이 yello의 가로 길이가 되며
yellow_y = i #옐로우의 세로 길이는 i가 된다
if (yellow_x * 2 + yellow_y *2) + 4 == brown:
answer.append(yellow_x+2)
answer.append(yellow_y+2)
return sorted(answer, reverse = True)
return answer
풀이 방법 👨🏻💻👩🏻💻
- 최종

카펫이 가로가 세로보다 길거나 같은, (직)사각형의 구조임을 감안하면 로직은 아래와 같음.
(옐로우의 가로(행))*2 + (옐로우의 세로(열))*2 +4 = brown
yellow의 세로 + 2 = Brown(=카펫)의 세로 길이
yellow의 가로 + 2 = Brown(=카펫)의 가로 길이
따라서 Yellow의 가로, 세로 값을 이용해 yellow_x(=옐로우의 가로)*2 + yellow_y(=옐로우의 세로)*2)+4 == brown 이면
Answer 배열에 borwn의 가로(yellow_x+2)와 berown의 세로(yellow_y)을 append하고,
내림차순으로 출력한다.
(문제에 카펫 가로 길이가 세로보다 크거나 같을 것이라는 제약 사항이 있기 때문에
큰 값은 가로, 작은 값은 세로가 되어야 하기 때문이다.)
'코테 준비 > Programmers' 카테고리의 다른 글
| [프로그래머스 lv.3] 정수 삼각형 (0) | 2023.03.30 |
|---|---|
| 프로그래머스 lv.1 - 하샤드 수 (0) | 2023.03.01 |
| 프로그래머스 - 나머지가 1이 되는 수 찾기 (0) | 2023.02.28 |
| [프로그래머스 lv1] 정수 내림차순으로 배치하기 (0) | 2023.02.27 |
| 프로그래머스 - 정수 제곱근 판별 (0) | 2023.02.27 |