알고리즘 풀이 방법입니다.
문제(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🤩

어려워서 답안 좀 참고했음


 

+ Recent posts