일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코드엔진
- 코드엔진 베이직
- Best of the Best
- 철학
- 리버싱
- 자살론
- 디지털 포렌식 트랙
- h4ckinggame
- 사회적 사실
- CodeEngn
- BoB 12기
- 에밀 뒤르켐
- bob
- 논문리뷰
- CodeEngn Basic 5
- 사회분업론
- codeengn basic rce 01
- 코드엔진 basic 5
- BoB 12기 최종합격 후기
- CodeEngn Basic 01
- malware
Archives
- Today
- Total
SEO
[프로그래머스/파이썬] 카펫 본문
반응형
문제 설명
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.
Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.
Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한사항
- 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
- 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
- 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.
입출력 예
brown | yellow | return |
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
def solution(brown, yellow):
if (yellow == 1):
return [3,3]
for length in range(1, (yellow//2)+1):
if (yellow % length == 0):
width = yellow//length +2
length = length+2
if ((length)*(width)-yellow == brown):
return [width, length]
- yellow가 1일 경우 경우의 수가 하나 밖에 없기 때문에 즉시 [3,3]을 반환합니다.
- 이외의 케이스의 경우 갈색 타일과 노란색 타일을 기반으로 직사각형 카펫의 가로, 세로 길이를 계산합니다.
- 실제 케이스들을 살펴보면 노란색 타일의 가로 길이 + 2 와 세로 길이 +2 를 곱한 값이 전체 카펫의 넓이이며, 여기서 노란색 타일의 넓이를 뺀 값이 갈색 타일의 넓이임을 알 수 있습니다. 이를 이용한 조건식을 코드로 구현하였습니다.
반응형
'코딩테스트 > 문제 풀이' 카테고리의 다른 글
[프로그래머스/파이썬] 전력망을 둘로 나누기 (1) | 2025.02.01 |
---|---|
[프로그래머스/파이썬] 피로도 (0) | 2025.01.30 |
[프로그래머스/파이썬] 소수 찾기 (0) | 2025.01.26 |
[프로그래머스/파이썬] 모의고사 (0) | 2025.01.19 |
[프로그래머스/파이썬] 최소직사각형 (0) | 2025.01.18 |