1 분 소요

Question

11047Q


Solution

  • K를 맞추기 위한 최솟값이니 K보다 바로 아래에 있는 값으로 감산해 나가면 될 것 같다

Cord

[C#]

using System;

class Program
{
    static void Main()
    {
        int answer = 0;
        string[] input = Console.ReadLine().Split(' ');
        int coins = int.Parse(input[0]);	// 코인수 N
        int goal = int.Parse(input[1]);		// 목표 값 K
        int[] coinsValue = new int[coins];	// 코인들의 값
		
        // 입력 받은 값을 배열에 저장
        for(int idx = 0; idx < coins; idx++)
        {
            coinsValue[idx] = int.Parse(Console.ReadLine());
        }
        
        // 큰 값을 먼저 찾아서 감산해야 하기 때문에
        // 높은 순서로 재정렬 
        Array.Reverse(coinsValue);

        while (goal != 0)
        {
            for (int idx = 0; idx < coinsValue.Length; idx++)
            {
                if (coinsValue[idx] <= goal)
                {
                    goal -= coinsValue[idx];
                    answer++;
                    idx--;	// 다시 검사하기 위함
                }
            }
        }
        Console.WriteLine(answer);
    }
}

[C++]

#include <iostream>
#include <vector>    
#include <algorithm> 

using namespace std;

int main()
{
    int answer = 0;
    int coins, goal;
    cin >> coins >> goal;

    vector<int> coinsValue(coins);
    
    for (int idx = 0; idx < coinsValue.size(); idx++)
    {
        cin >> coinsValue[idx];
    }
    
    // 시작과 끝부분을 지정하여 리버스 시킴
    reverse(coinsValue.begin(), coinsValue.end());
    
    while (goal != 0) 
    {
        for(int idx = 0; idx < coinsValue.size(); idx++)
        {
            if (goal >= coinsValue[idx]) 
            {
                goal -= coinsValue[idx];
                idx--;
                answer++;
            }
        }
    }
    cout << answer;
    return 0;
}

Result

11047Sharp

11047


What`s new

C++

vector 라고 STL에 있는 컨테이너라고 한다.
배열과 같은 자료구조 인가 보다.