본문 바로가기
알고리즘

알고리즘 스터디

by COCO1337 2020. 7. 9.

Google Kickstart 2020 Round A

Allocation

N개의 집이 있고, i번째 집의 가격은 Ai 달러이다. 총 재산은 B달러만큼 가지고 있다.

살수있는 집의 최대 갯수를 구하는 문제이다.

 

Limits

Time limit: 15 seconds per test set.
Memory limit: 1GB.
1 ≤ T ≤ 100.
1 ≤ B ≤ 10^5.
1 ≤ Ai ≤ 1000, for all i.

 

Test set 1

1 ≤ N ≤ 100.

Test set 2

1 ≤ N ≤ 10^5.

 

C++를 사용한 제 풀이입니다.

#include <iostream>
#include <algorithm>

using namespace std;

int n, b, a[100000];

void solve() {
	cin >> n >> b;

	for (int i = 0; i < n; ++i) {
		cin >> a[i];
	}

	sort(a, a + n);

	int ans = 0;

	for (int j = 0; j < n; ++j) {
		if (b >= a[j]) {
			b -= a[j];
			++ans;
		}
	}

	cout << ans << "\n";
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int t;
	cin >> t;
	for (int i = 1; i <= t; ++i) {
		cout << "Case #" << i << ": ";
		solve();
	}
}

프로그래머스랑 조금 다르게 cin부터 해야돼서 입력받는 부분은 다른 사람이 했던 걸 조금 참조하긴 했어요..

이번 것도 배열을 이용해서 풀었는데 집 가격을 우선 오름차순으로 정리해 싼 집부터 구매했어요

구매할때마다 ans를 1씩 증가시켜줬고 case별로 출력했네요.

프로그래머스 난이도로 생각해보면 1레벨 정도가 아닐까 생각해요

 

반응형

'알고리즘' 카테고리의 다른 글

알고리즘 스터디  (0) 2020.07.15
알고리즘 스터디  (0) 2020.07.13
알고리즘 스터디  (0) 2020.07.09
알고리즘 스터디  (0) 2020.07.07
알고리즘 스터디 13  (0) 2020.07.06

댓글