๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 11047๋ฒˆ : ๋™์ „ 0

by nitronium102 2021. 8. 16.

๋ฌธ์ œ

์ค€๊ทœ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋™์ „์€ ์ด N์ข…๋ฅ˜์ด๊ณ , ๊ฐ๊ฐ์˜ ๋™์ „์„ ๋งค์šฐ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋™์ „์„ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•ด์„œ ๊ทธ ๊ฐ€์น˜์˜ ํ•ฉ์„ K๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๋™์ „์˜ ๊ฐ€์น˜ Ai๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2์ธ ๊ฒฝ์šฐ์— Ai๋Š” Ai-1์˜ ๋ฐฐ์ˆ˜)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— K์›์„ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ

01. vector์— ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ž…๋ ฅ๋œ ์ˆซ์ž๋ฅผ ๋„ฃ๋Š”๋‹ค

02. algorithm ํ—ค๋”์˜ reverse ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ œ์ผ ํฐ ์ˆ˜๋ถ€ํ„ฐ ๋‚˜๋ˆ„๊ธฐ ๋•Œ๋ฌธ

03. ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ vector๋ฅผ ์ด์šฉํ•˜์—ฌ ๋™์ „ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•œ๋‹ค

#include <iostream>
#include <vector>
#include <algorithm> // reverse
using namespace std;

int main(){
  int N, K, num, cnt=0;
  cin >> N >> K;
  vector<int> v;

  // 01. vector์— ๋„ฃ๊ธฐ
  for (int i=0; i<N; i++){
    cin >> num;
    v.push_back(num);
  }

  // 02. ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋’ค์ง‘๊ธฐ
  reverse(v.begin(), v.end());

  // 03. ์ตœ์†Œ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
  for (int i=0; i<N; i++){
    if (K >= v[i]){
      cnt += K/v[i];
      K %= v[i];
    }
  }

  cout << cnt;
}

๋Œ“๊ธ€