반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(brown, yellow):
answer = []
for i in range(3, int((brown + yellow)**0.5)+1):
if (brown + yellow) % i == 0 and (i-2) * (((brown+yellow) // i) - 2) == yellow:
answer = [(brown+yellow) // i, i]
return answer
코드 설명
- 입출력 예의 규칙을 살펴보면 리턴 값은 brown과 yellow를 더한 값의 약수이다.
- yellow의 최솟값이 1이고 전체 카펫의 가로 세로 크기는 최소 3, 3이기 때문에(예시2가 카펫의 최소 크기), 반복문은 3부터 시작하도록 코드를 작성했다.
- 반복문 안에서 두 수의 합의 약수를 찾고 해당 약수를 이용한 가로X세로 크기가 yellow 크기와 일치하는지 확인한다.
- yellow의 크기: 가로 X 세로 ☞ (전체 크기의 가로 -2) X (전체 크기의 세로 -2)
- 조건문에 일치하는 i를 찾았으면, brown + yellow를 i로 나눈 몫과 i 값을 차례로 배열에 넣어 리턴한다.
- 루프를 루트보다 작거나 같은 값 안에서 돌았기 때문에 i보다 brown + yellow // i가 더 크다. 문제의 조건에 따라 brown + yellow // i를 앞쪽에 배치한다.
반응형
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬] 캐시(2018 KAKAO BLIND RECRUITMENT/ level 2) (0) | 2023.01.01 |
---|---|
[프로그래머스 | 파이썬] H-Index(정렬/ level 2) (0) | 2022.12.30 |
[프로그래머스 | 파이썬] 비밀지도 (2018 KAKAO BLIND RECRUITMENT/ level 1) (0) | 2022.12.28 |
[프로그래머스] 연습문제 "같은 숫자는 싫어"(파이썬) (0) | 2022.05.14 |
[프로그래머스] 연습문제 "가운데 글자 가져오기"(파이썬) (0) | 2022.05.05 |
[프로그래머스] 위클리 챌린지 "부족한 금액 계산하기"(파이썬) (0) | 2022.05.05 |