반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JavaScript
- 공부
- 스즈메의 문단속
- GenAI
- 224일선
- 1일차
- 리팩터링
- 리팩터링 3장
- 주식
- 전주비빔 라이스 버거
- 주식단테
- 2023 Gaming
- 이득우의 언리얼 프로그래밍1
- 448일선
- 스포일러 주의
- 이득우의 언리얼 프로그래밍 1
- 2023 구글 클라우드
- 리팩터링 4장
- 작계훈련
- URP
- unity
- 언리얼5
- shader
- 상계9동
- 2023 게이밍 인 구글 클라우드
- 언리얼 5
- 산토리 하이볼
- 구글 컨퍼런스
- 112일선
- 2023 게이밍
Archives
- Today
- Total
개발 이야기 안하는 개발자
알고리즘 공부 (2024_11_12) 본문
반응형
아휴...알고리즘 공부가 쉽지가 않네...
이거 뭐 푼 문제가 있어야 올리지...마음이 꺾인다....
요즘 안올린건 문제를 안푼게 아니고 거진 2~3시간을 한두문제만 풀어서 그렇다...
그래도 배낀거라도 올려야 할거 같아서 글 씁니다..
백준 2258 : 정육점
지정한 무게 아래가 아니고 가격 아래를 모두 고려해야 하는 문제.
여러개의 같은 무게가 있을 수 있고, 여러개의 같은 가격이 있을 수도 있기 때문에 이 모든 경우를 고려해야 하는 문제.
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <vector>
#include <iostream>
#include <fstream>
#include <stack>
#include <math.h>
#include <string>
#include <climits>
struct Info
{
long long Kg;
long long Price;
Info(long long a, long long b) : Kg(a), Price(b) {};
const bool operator<(Info& other) const
{
if (other.Price == Price)
{
return other.Kg < Kg;
}
else
{
return other.Price > Price;
}
}
};
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int N, M;
long long A, B;
cin >> N >> M;
vector<Info> NV;
for (int i = 0; i < N; i++)
{
cin >> A >> B;
NV.push_back(Info(A,B));
}
sort(NV.begin(), NV.end());
int KgSum = 0;
int PriceSum = 0;
int before = -1;
for (int i = 0; i < NV.size(); i++)
{
if (KgSum < M)
{
if (before == NV[i].Price)
{
PriceSum += NV[i].Price;
}
else
{
before = PriceSum = NV[i].Price;
}
}
else
{
if ((before != NV[i].Price) && (PriceSum >= NV[i].Price))
{
before = PriceSum = NV[i].Price;
}
}
KgSum += NV[i].Kg;
}
if (KgSum < M)
cout << -1 << endl;
else
cout << PriceSum << endl;
return 0;
}
백준 12018 : Yonsei TOTO
#include <stdio.h>
#include <algorithm>
#include <queue>
#include <vector>
#include <iostream>
#include <fstream>
#include <stack>
#include <math.h>
#include <string>
#include <climits>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int N, M;
cin >> N >> M;
vector<int> NV;
int Answer = 0;
int Count = 0;
for (int i = 0; i < N; i++)
{
vector<int> PV;
int P, L;
cin >> P >> L;
for (int j = 0; j < P; j++)
{
int k;
cin >> k;
PV.push_back(k);
}
if (L > P)
{
NV.push_back(1);
}
else
{
sort(PV.begin(), PV.end(), greater<int>());
int opt = PV[L - 1];
NV.push_back(opt);
}
}
sort(NV.begin(), NV.end());
for (int i = 0; i < NV.size(); i++)
{
Count += NV[i];
if (Count <= M)
{
Answer++;
}
else
{
break;
}
}
cout << Answer;
return 0;
}
반응형
'개발' 카테고리의 다른 글
알고리즘 공부 (2024_11_15) (1) | 2024.11.15 |
---|---|
알고리즘 공부 (2024_11_13) (0) | 2024.11.13 |
알고리즘 공부 (2024_11_8) (3) | 2024.11.08 |
알고리즘 공부 (2024_10_31) (1) | 2024.10.31 |
알고리즘 공부 (2024_10_30) (0) | 2024.10.30 |