https://school.programmers.co.kr/learn/courses/30/lessons/42842?language=python3
def solution(brown, yellow):
answer = []
sum = brown + yellow
for width in range(1, yellow + 1):
if yellow % width == 0:
height = yellow / width
if (height + 2) * (width + 2) == sum:
return list([height + 2, width + 2])
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int sum = brown + yellow;
for(int i = 1; i <= yellow; i ++) {
if (yellow % i == 0) {
int width = i;
int height = (int)(yellow / i);
if ((width + 2) * (height + 2) == sum) {
answer[0] = width + 2;
answer[1] = height + 2;
}
}
}
return answer;
}
}
접근법
- (노란색 가로 + 2) * (노란색 세로 + 2) = 전체 칸
- yellow의 값을 너비로 나눠서 몫이 0이되는 값이 width이다
- 그걸 가지고 높이를 구한다. yellow / width = height
- 처음 위의 공식을 통해서 값을 구한다.
- yellow + 1의 값을 해줘야 한다. (간단하게 생각해보면 yellow가 1일때도 반복문이 한번은 반복되어야 하므로)
'자료구조 & 알고리즘 관련 > 코딩테스트' 카테고리의 다른 글
점프와 순간 이동 (0) | 2023.01.23 |
---|---|
구명보트 (0) | 2023.01.23 |
스킬트리 (0) | 2023.01.03 |
귤 고르기 (0) | 2023.01.02 |
N진수 게임 문제 (자바) (0) | 2022.12.28 |