알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Think🤔
1. 전체 면적 구하기
2. 노란색 면적 구하기
3. 전체 - 노란색 = 갈색
내가 생각한 방법은 아니고 모르겠어서 방법만 참조하고 코드를 구현해본다
1. 전체 면적 구하기
2. 노란색 면적 구하기
3. 전체 - 노란색 = 갈색
18 b : 14 y : 4 ---> 6,3
15 b : 12 y : 3 ---> 5,3
12 b : 10 y : 2 ---> 4,3
36 b : 20 y : 16 ---> 6,6 / 16 + 4 4제곱
25 b : 16 y : 9 ---> 5,5 / 12 + 4 3제곱
16 b : 12 y : 4 ---> 4,4 / 8 + 4 2제곱
9 b : 8 y : 1 ---> 3,3 / 4 + 4 1제곱
규칙은 이런식
사각형인지 , 직사각형인지 판단 방법
45334795
테스트 4
입력값 〉 18, 6
기댓값 〉 [8, 3]
실행 결과 〉 실행한 결괏값 [6,4]이 기댓값 [8,3]과 다릅니다.
[18, 6] -> [8, 3] (o)
[18, 6] -> [6, 4] (x)
Solution✍
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int sumArea = brown + yellow; // 24
// 높이 3부터
for(int i=3; i<sumArea; i++){
if(sumArea % i == 0){
int width = sumArea/i; // 전체면적에서 높이를 나눴을 때 떨어지면 넓이가 나옴 // 8
int height = i; // 해당 높이 // 3
if(height > width){ // 세로 길이보다 길다 했으므로 , 세로 길이가 더 길면 패쓰.
continue;
}
if((width - 2) * (height - 2) == yellow){
answer[0] = width;
answer[1] = height;
}
}
}
return answer;
}
}
Review🤩
어려워서 답안 좀 참고했음
'Algorithm' 카테고리의 다른 글
[프로그래머스] 상품을 구매한 회원 비율 구하기 (0) | 2023.12.20 |
---|---|
자바 숫자야구 구현 - 1 (0) | 2023.12.09 |
[프로그래머스] 짝지어 제거하기 (0) | 2023.10.23 |
[프로그래머스] 문자열 나누기 (0) | 2023.10.20 |
[프로그래머스] 숫자 짝꿍 (0) | 2023.10.17 |