• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [프로그래머스] 카펫(C++)
    2024년 01월 19일
    • 유니얼
    • 작성자
    • 2024.01.19.:04
    728x90

    안녕하세요! 오늘은 코딩테스트 문제 중 하나인 "카펫" 문제를 해결하는 방법에 대해 설명하려고 합니다. 이 문제에서는 갈색 격자와 노란색 격자의 수를 바탕으로 카펫의 가로, 세로 크기를 찾는 것이 목표입니다. 문제를 해결하는 과정과 코드를 자세히 알아보겠습니다.

    문제 링크:

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

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    Question_1
    Question_2

    문제 개요

    Leo는 카펫 쇼핑 중 특이한 카펫을 보았습니다. 이 카펫은 중앙이 노란색으로, 테두리가 갈색으로 칠해진 격자 모양이었습니다. Leo는 카펫의 갈색 격자 수(brown)와 노란색 격자 수(yellow)는 기억했지만, 카펫의 전체 크기는 기억하지 못했습니다. 이 문제에서는 갈색 격자와 노란색 격자의 수를 바탕으로 카펫의 가로, 세로 크기를 찾는 것이 목표입니다.

    문제 해결 전략

    문제를 해결하기 위한 전략은 다음과 같습니다:

    1. 가능한 치수 탐색: 카펫의 가로(x)와 세로(y) 길이를 순회하며 모든 가능한 치수 조합을 확인합니다.
    2. 격자 수 계산: 각 치수 조합에 대해 갈색 격자 수와 노란색 격자 수를 계산합니다.
    3. 조건 일치 확인: 계산된 격자 수가 주어진 갈색과 노란색 격자 수와 일치하는지 확인합니다.

    코드 구현 

    #include <string>
    #include <vector>
    #include <bits/stdc++.h>
    using namespace std;
    
    vector<int> solution(int brown, int yellow) {
        vector<int> answer;
        // 가능한 세로 길이 y를 3부터 탐색 시작
        for(int y = 3; y <= brown; y++){
            // 가능한 가로 길이 x를 3부터 탐색 시작
            for(int x = 3; x <= brown; x++){
                // 갈색 격자의 수 계산: 테두리 격자 수
                int sizeBrown = (x + (y - 2)) * 2;
                // 노란색 격자의 수 계산: 내부 격자 수
                int sizeYellow = (x - 2) * (y -2);
                // 조건 일치 여부 확인
                if(sizeBrown == brown && sizeYellow == yellow){
                    answer.push_back(x);
                    answer.push_back(y);
                    return answer;
                }
            }
        }
        
        return answer;
    }

    코드 설명

    • 이 코드는 가로와 세로 길이의 모든 조합을 탐색하여 갈색 격자와 노란색 격자의 수가 주어진 조건과 일치하는지 확인합니다.
    • 갈색 격자는 테두리를 형성하기 때문에, (x + (y - 2)) * 2 공식으로 그 수를 계산합니다.
    • 노란색 격자는 내부에 위치하기 때문에, (x - 2) * (y - 2) 공식으로 그 수를 계산합니다.
    • 가로 길이 x와 세로 길이 y가 주어진 조건을 만족할 경우, 이 치수가 정답입니다.

    결론

    "카펫" 문제는 간단한 수학적 접근과 완전 탐색을 통해 해결할 수 있습니다. 주어진 갈색과 노란색 격자 수를 바탕으로 가능한 치수를 모두 탐색하여, 조건을 만족하는 치수를 찾아내는 것이 핵심입니다. 이러한 방식으로 Leo는 카펫의 정확한 크기를 알아낼 수 있습니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바