티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/42842
1. 풀이
- 세로 길이는 1부터 최대 (yellow 제곱근 + 1)까지 가능하다
가로 길이가 세로 길이보다 크거나 같기 때문이다. 예를 들어 yellow 개수가 8개일 때 조합할 수 있는 가로세로 길이는 (8, 1), (4, 2)뿐이다. 세로는 1과 2만 가능한데, 8의 제곱근이 2.xxx이라서 세로가 2일 수 있는 것이다!
참고로 아래 코드에서는 math 모듈을 import 해서 sqrt() 메서드를 사용하는 대신 yellow ** 0.5, 즉 yellow 개수에 0.5를 제곱해서 제곱근을 계산했다.
- brown 개수는 (yellow 가로 + 2) * 2 + (yellow 세로) * 2
yellow 가로가 2일 때, 위 아래로 brown 개수는 (yellow + 2) * 2이고, 세로에는 yellow 세로 * 2개가 필요함을 확인할 수 있다.
2. 정답 코드
def solution(brown, yellow):
for col in range(1, int(yellow ** 0.5) + 1):
if yellow % col != 0: continue
row = yellow // col
if brown == ((row + 2) * 2 + (col * 2)):
return [row + 2, col + 2]
728x90
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 단어 변환 파이썬 풀이 (0) | 2024.03.27 |
---|---|
[프로그래머스] 피로도 파이썬 풀이 (0) | 2024.03.26 |
[프로그래머스] 소수 찾기 파이썬 풀이 (0) | 2024.03.26 |
[프로그래머스] 네트워크 파이썬 풀이 (0) | 2024.03.25 |
[프로그래머스] 타겟 넘버 파이썬 풀이 (0) | 2024.03.24 |