본문 바로가기

TIL(Today I Learned)

[TIL] 99클럽 코테 스터디 21일차 TIL + 프로그래머스 카펫

반응형

 

문제 풀이

 

문제 탐색하기

중앙에 노란색 카펫이 있고 겉으로 갈색 카펫이 1줄 테두리로 위치하고 있습니다.

중앙에 노란색 카펫을 기준으로 규칙을 생각해보면 노란색 카펫의 가로 길이 : x, 세로 길이 : y라 할 때 아래의 공식이 성립됩니다.

x*y = yellow카펫 개수
2(x+y) + 4 = brown카펫 개수

 

따라서 x, y로 각각 for문을 돌면서 해당 공식에 맞는 값을 배열에 추가해주면 되는 완전 탐색 문제입니다.

for문의 범위는 x,y의 범위가 brown/2 로 나눈 값보다 작을 것이기 때문에 brown/2까지 탐색하는 것으로 하였습니다.

 

문제 풀이

class Solution {
    public int[] solution(int brown, int yellow) {
        
        int[] result = new int[2];
        for(int i=0; i<brown/2; i++){
            for(int j=0; j<brown/2; j++){
                if(i*j == yellow && 2*(i+j)+4 == brown){
                    result[0] = i+2;
                    result[1] = j+2;
                    break;
                 }
            }
        }
        
        return result;
    }
}

 

 

오늘의 회고

문제를 풀고나서 다른 사람의 풀이를 보다보니 근의 공식을 활용해서 문제를 푼 사람도 있었습니다. 어릴때 배웠던 수학의 개념을 활용하면 문제를 풀때도 충분히 응용할 수 있겠구나 생각이 들었습니다. 정말 대단,,,

반응형