알고리즘/Greedy 8

백준[13305] 주유소

어려운 문제...ㅠ 문제를 풀때 생각한 경우의 수 현재 도시 주유소에서 현재 주유소 보다 저렴하고 가까운 다른 도시 주유소 까지 거리 x 현재 주유소 가격 현재 주유소가 가장 저렴한 경우 위 경우의 수를 생각하고 문제를 풀었는데... 문제 3번의 조건이 충복이 되지 않는다고 한다 ㅠ □ 소스 코드 #include /* 가격이 가장 싼 주유소가 나오면 남은 거리 모두 주유 도시에서 자신보다 작은 가격이 있는 경우 해당 지점거리 까지만 주유, 없는 경우 끝까지 주유 */ void gasStation(){ int n; //도시 개수 cin>> n; vector km; vector price; int totaldis = 0; // 각 도시 사이의 거리 입력 for(int i=0;i> dis; totaldis +..

알고리즘/Greedy 2023.01.05

백준[1541] 잃어버린 괄호

괄호를 사용하여 입력된 식을 최솟값으로 만드는 문제이다. 해결 방법 문자열에 -가 한 개라도 있으면 - 뒤의 숫자들은 모두 뺄셈처리를 하면 최솟값이 된다. 예시 '5-1+4+3-2+1+3'이라는 식이 입력되었을 때 최솟값으로 만들기 위해서는 괄호를 다음과 같이 지정하면 된다. '5-(1+4+3)-(2+1+3)'으로 괄호를 사용하면 해당 식의 최솟값이 나온다. □ 소스 코드 #include /* - 직후에 ( 시작 첫 번쨰 - 이후에 두번째 - 이전까지 괄호를 모든 식에 적용 -가 한개라도 있는 경우 모두 괄호처리를 통해 빼기 계산이 가능해 진다. */ void lost(){ string input; cin>>input; string shortNum; int result = 0; bool checkMinu..

알고리즘/Greedy 2023.01.05

백준[1931] 회의실 배정

해당 문제를 풀기 위해서 회의가 끝나는 시간들을 기준으로 오름차순 정렬을 한다. 가장 첫 번째 회의를 선택하여 계산을 진행하면 가장 많은 회의를 선택할 수 있다. □ 소스코드 #include // 회의가 끝나는 시간을 기준으로 오름차순 정렬하는 함수 bool sorting(pair p1, pair p2) { // compare 함수 if (p1.second == p2.second) { return p1.first > n; vector v; // 입력받는 구문 for(int i=0;i> start >> end; v.push_back(make_pair(start, end..

알고리즘/Greedy 2023.01.05

큰 수의 법칙

해당 문제는 C++을 사용하여 코딩합니다. □ 내가 작성한 소스코드 #include void bigNum() { int N, M, K; vector v; int sum = 0; //입력 받는 부분 cin>> N >> M >> K; for(int i=0;i> x; v.push_back(x); } sort(v.begin(),v.end()); //입력받은 수 정렬 int max = v[N-1]; //가장 큰수 int secondMax = v[N-2]; //두번째로 큰 수 int k = K; while ( M > 0 ){ if(k!=0) // 가장 큰 수 반복하는 경우 sum += max; if(k == 0){ // 연속하는 횟수가 모두 소진된 경우 k = K; sum += secondMax; //두번째로 큰 ..

알고리즘/Greedy 2023.01.04