[Algorithm] 카펫

2025. 1. 23. 09:53·Algorithm/Practice

문제 설명

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

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

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

 

문제 풀이

  1. 노란색 격자의 가로, 세로 길이는 정해져있다.
    1. 가로 : 카펫의 가로 길이 - 2
    2. 세로 : 카펫의 세로 길이 - 2
  2. 모든 격자(갈색 + 노란색)를 일렬로 나열하고 가로 길이 3부터 등분해본다.
    1. 등분하였을 때 모든 가로길이가 동일하다면 (나누어 떨어진다)
      1. 노란색 격자의 가로 길이와 세로 길이가 위 조건에 충족한지 확인한다.
      2. 충족한다면 가로 길이와 세로 길이를 결과값에 담는다.
    2. 그렇지 않다면  가로 길이를 증가시킨다.
  3. 결과값을 반환한다.

 

코드 작성

#include <vector>
#include <cmath>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer(2, 0);
    
    // 블록을 한 줄로 나열했을 때의 길이
    int area = brown + yellow;
    
    // 카펫의 가로는 최소 3부터 시작한다.
    for (int width = 3; width <= area; ++width)
    {
        if (area % width != 0)
            continue;
        
        int height = area / width;

        if ((width - 2) * (height - 2)  == yellow)
        {
            answer[0] = max(width, height);
            answer[1] = min(width, height);
            break;
        }
    }
    
    return answer;
}

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] N개의 최소공배수  (0) 2025.01.24
[Algorithm] 예상 대진표  (0) 2025.01.23
[Algorithm] 피보나치 수  (0) 2025.01.23
[Algorithm] 이진 변환 반복하기  (0) 2025.01.22
[Algorithm] JadenCase 문자열 만들기  (1) 2025.01.22
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] N개의 최소공배수
  • [Algorithm] 예상 대진표
  • [Algorithm] 피보나치 수
  • [Algorithm] 이진 변환 반복하기
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    퀘스트
    component
    알고리즘
    레벨디자인
    DesignPattern
    Implement
    본캠프
    GameplayEffect
    gas
    KPT회고
    게임동기화
    c++
    내일배움캠프
    소프트 레퍼런신
    Design Pattern
    디자인패턴
    AI
    unrealengine
    액터
    actor
    하드 레퍼런싱
    assetmanager
    unreal
    Algorithm
    Animation
    사전캠프
    basic
    디자인 패턴
    tsoftobjectptr
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] 카펫
상단으로

티스토리툴바