728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42842
해설
이 문제는 입출력 예시를 직접 손으로 그려보면 좀 더 쉽게 방법을 찾을 수 있다.
위 이미지를 보면
Y의 가로(빨강B) + Y의 세로(파랑B) + 2(하양B) == B // 2라는 것을 알 수 있다.
그렇다면 Y가로 + Y세로 + 2값이 B//2와 같아질 때
카펫의 가로, 세로 크기를 알아낼 수 있다.
카펫의 가로, 세로는 각각 Y가로+2, Y세로+2 이므로
위의 식을 i = 1부터 대입해 풀면 끝이다.
**아래 코드 if문에서 yellow/i 대신 yellow//i로 바꾸면 틀리는 케이스가 존재하는데,
아직 정확한 이유는 잘 모르겠다.
Y를 i로 나눈 값이 실수가 나오는 경우가 생겨서 그러는 것인지..
카펫의 가로 값을 구한 부분에선 Y가 i로 나누어 떨어지는 것이 확실한 부분이기 때문에 몫을 구해도 되는걸까
B를 2로 나눈 부분도 B는 무조건 2의 배수이기 때문에 몫으로 구해도 되는것일까
코드
-파이썬
#프로그래머스 42842(카펫)
def solution(brown, yellow):
answer = []
for i in range(1, yellow + 1):
if (yellow/i) + i + 2 == brown//2:
answer.append((yellow//i) + 2) #가로
answer.append(i + 2) #세로
return answer
print(solution(18, 6))
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[파이썬] 프로그래머스_K번째 수 (0) | 2022.04.18 |
---|---|
[파이썬] 프로그래머스_주식가격 (0) | 2022.04.05 |
[파이썬] 프로그래머스_소수 찾기 (0) | 2022.04.01 |
[파이썬] 프로그래머스_최소직사각형 (0) | 2022.02.23 |
[파이썬] 프로그래머스_예산 (0) | 2022.02.16 |