프로그래머스 [ 카펫 / Lv2 ] - JAVA

2025. 3. 27. 22:42·알고리즘/프로그래머스

문제 링크


https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

문제 설명


Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.

 

Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.

 

Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요.

 

제한사항


  • 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다.
  • 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다.
  • 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다.

 

입출력 예


 

코드


class 카펫 {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];
        int yellowWidthPlusHeight = (brown / 2) - 2;

        for(int height = 1; height <= Math.sqrt(yellow); height++) {
            int width = yellowWidthPlusHeight - height;
            if(height * width == yellow) {
                answer[0] = width + 2;
                answer[1] = height + 2;
            }
        }
        return answer;
    }
}

 

알고리즘 설명


간단한 브루트 포스 알고리즘 문제입니다. 주어진 갈색 카펫과 노란색 카펫의 면적을 기반으로, 카펫의 가로와 세로 크기를 구합니다. 핵심은  노란색 카펫의 가로와 세로를 구한 뒤, 이를 기반으로 전체 카펫의 크기를 계산하는 것입니다.

 

코드 해석


yellow 카펫의 가로와 세로 길이를 더한 값은 (brown 카펫 외곽의 격자 개수 / 2) - 2로 구할 수 있습니다. 카펫의 가로 길이는 세로 길이보다 크거나 같기 때문에, 노란색 카펫의 세로 길이는 yellow의 제곱근보다 클 수 없습니다. 따라서 height를 1부터 yellow의 제곱근까지 탐색하며, 그에 맞는 가로 길이를 구합니다.

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

프로그래머스 [ 전력망을 둘로 나누기 / Lv2 ] - JAVA  (0) 2025.04.05
프로그래머스 [ 피로도 / Lv2 ] - JAVA  (0) 2025.03.27
프로그래머스 [ 모의고사 / Lv1 ] - JAVA  (0) 2025.03.27
프로그래머스 [ 소수 찾기 / Lv2 ] - JAVA  (0) 2025.03.22
프로그래머스 [ 최소직사각형 / Lv1 ] - JAVA  (0) 2025.03.22
'알고리즘/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 [ 전력망을 둘로 나누기 / Lv2 ] - JAVA
  • 프로그래머스 [ 피로도 / Lv2 ] - JAVA
  • 프로그래머스 [ 모의고사 / Lv1 ] - JAVA
  • 프로그래머스 [ 소수 찾기 / Lv2 ] - JAVA
BIS's tech Blog
BIS's tech Blog
Welcome to Kanghyun's tech blog :)
  • BIS's tech Blog
    벼익숙의 기술 블로그
    BIS's tech Blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (69) N
      • 알고리즘 (55) N
        • 백준 (46) N
        • 프로그래머스 (9)
      • CS 스터디 (14)
        • CS - JAVA (11)
        • CS - DB (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    재귀
    백트래킹
    알고리즘 고득점 kit
    java
    브루트포스
    Lv2
    DFS
    Baekjoon
    dp
    자료구조
    깊이 우선 탐색
    BFS
    백준
    CS
    프로그래머스
    너비 우선 탐색
    Top-Down
    기술질문
    완전탐색
    동적 계획
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
BIS's tech Blog
프로그래머스 [ 카펫 / Lv2 ] - JAVA
상단으로

티스토리툴바