Leaning/C++

[프로그래머스] 9번/ 지폐접기

ksw8596 2024. 11. 21. 21:07
#include <string>
#include <vector>

using namespace std;

//지갑의 가로, 세로 크기를 담은 정수 리스트 wallet
//지폐의 가로, 세로 크기를 담은 정수 리스트 bill

int solution(vector<int> wallet, vector<int> bill) {
    int answer = 0;
    //wallet 가로 세로의 크기가 bill보다 큰지 보고 
    //answer은 접은 횟수
    while((wallet[0] >= bill[0] && wallet[1] >= bill[1]) || (wallet[0] >= bill[1] && wallet[1] >= bill[0]))
    {
        if(bill[0] > bill[1])
        {
            bill[0] /= 2;
        }
        else
        {
            bill[1] /= 2;
        }
        answer++;
    }
    return answer;
}

wallet의 길이 = bill의 길이 = 2
10 ≤ wallet[0], wallet[1] ≤ 100
10 ≤ bill[0], bill[1] ≤ 2,000

 

 

다른분의 것

#include <string>
#include <vector>

using namespace std;

//지폐를 지갑에 넣을 수 있는지 확인하는 함수
bool putwallet(vector<int> &wallet, const vector<int> bill)
{
    if(wallet[0] >= bill[0] && wallet[1] >= bill[1])
    {
        return true;
    }
    else if(wallet[0] >= bill[1] && wallet[1] >= bill[0])
    {
        return true;
    }
    else
    {
        return false;
    }
}
//지갑에 맞을 때 까지 접는 함수
int foldbill(vector<int>& wallet, vector<int>& bill)
{
    int answer = 0;
    while(false == putwallet(wallet, bill))
    {
        if(bill[0] > bill[1])
        {
            bill[0] /= 2;
        }
        else
        {
            bill[1] /= 2;
        }
        answer++;
    }
    return answer;
}
int solution(vector<int> wallet, vector<int> bill) {
    int answer = 0;
    answer = foldbill(wallet, bill);
    return answer;
}