본문 바로가기
Leaning/C++

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

by ksw8596 2024. 11. 21.
#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;
}

'Leaning > C++' 카테고리의 다른 글

[Hackerrank] Vector-Erase  (0) 2024.11.04
[Hackerrank] Vector-Sort  (0) 2024.11.04
DFS(깊이 우선 탐색), BFS(너비 우선 탐색)  (0) 2024.10.25
C++ 자료구조(STL)  (0) 2024.10.24
[HackerRank] Hotel Prices  (0) 2024.10.17