greedy 8

[백준 1946] 신입 사원

문제설명 알고리즘 1. 입력 값 저장 2. 서류 점수 기준으로 오름차순 정렬 3. 서류 1등의 면접 점수를 기준으로 다음 사람들의 면접 점수를 조회해 더 높은 값이 나올때 마다 합격, 및 업데이트 코드 #include #include #include using namespace std; vector grade; int main() { int T, N; cin >> T; while (T) { cin >> N; for (int i = 0; i > x >> y; grade.push_back({x,y}); } sort(grade.begin(), grade.end()); //서류 기준 오름차순 정렬 int cnt = 1;// 1등은 합격 int inte..

Algorithm 2022.06.30

[백준 1026] 보물

문제설명 주어진 입력을 받은 뒤, 배열끼리의 최소합을 구해서 출력한다 이때 오로지 A배열의 값만 순서를 바꾼다 알고리즘 1. 입력될 수의 갯수와 각 배열을 입력 받는다 2. A배열은 오름차순, B배열은 내림차순으로 정렬한다 3. 각 인덱스에 맞게 곱하여 총 합을 출력한다 코드 #include #include #include using namespace std; int A[51]; int B[51]; int main() { int n; cin >> n; for (int i = 1; i > A[i]; for (int i = 1; i > B[i]; sort(A+1, A + n+1); sort(B+1, B + n+1,greater()); int sum = 0; for (int i = 1; i

Algorithm 2022.06.24

[프로그래머스] 구명보트

문제설명 보트는 한번에 두 명씩 탑승 할 수 있으나, 무게 제한을 넘길 수는 없다 최소한으로 보트를 움직이는 수를 구하라 알고리즘 1. 주어진 사람의 무게 벡터를 오름차순으로 정렬한다 2. 제일 가벼운 사람과 그 다음사람 두명이 한 보트에 타지 못한다면, 보트는 인원수 만큼 움직인다 3. 벡터에서 제일 무거운 사람의 무게를 꺼내고 지운다 4. 만약 그 값과 제일 가벼운사람부터 조회하여 한 보트에 탈 수 있는 경우, idx를 증가 시킨다 5. 한 보트에 탈 수 없는 경우 그 사람은 혼자 탄다-> 그 다음으로 무거운 사람을 꺼낸다 6. 보트에 둘이 탈 수 있던 없던 1씩 증가시킨다 (혼자 타는 경우, 둘이타는 경우 모두 배가 한번 움직임) 코드 #include #include #include #include..

Algorithm 2022.06.24

[HackerRank ] Minimum Absolute Difference in an Array

문제설명 vector에 숫자들이 입력되어 있다. 두 숫자의 절대값 차를 계산하여 가장 작은 값을 결과값으로 낸다. 알고리즘 vector sort vector 전체 순회 및 가장 작은 차(min) 계산 min값 반환 알고리즘은 minimumAbsoluteDifference 함수만 확인하면 된다. 코드 #include using namespace std; string ltrim(const string &); string rtrim(const string &); vector split(const string &); /* * Complete the 'minimumAbsoluteDifference' function below. * * The function is expected to return an INTEGE..

Algorithm 2022.04.06

[백준 11399] ATM

ATM 문제설명 사람의 수를 입력받고, 사람당 걸리는 시간을 입력 받는다. 사람들이 돈을 인출하는데, 최소한의 시간 합을 구해서 출력시켜라. 알고리즘 사람의 수와 각 사람당 걸리는 시간을 입력 받는다. 걸리는 시간을 오름차순으로 정렬한다. 반복문을 사용해서 각 사람이 걸리는 시간을 더해주고, 이전 사람이 걸렸던 시간까지 누적해서 더한다. 결과를 출력한다. #include #include #include #include #include #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; // 사람수 입력 vector v; while (N) { i..

Algorithm 2021.07.29

[백준 12904] A와 B

A와 B 문제 설명 시작하는 문자열 S와 만들고자 하는 문자열 T를 입력 받은 뒤, 규칙을 지켜서 T로 만들 수 있으면 1을 출력하고 그렇지 않으면 S를 출력한다. 그 규칙은 다음과 같다. 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. 알고리즘 S와 T를 입력 받는다. 반복문을 통해서 T를 맨 뒤 글자부터 확인한다. 맨뒤가 A인 경우 맨 뒤 한 글자를 지운다. 맨뒤가 B인 경우 맨 뒤 한 글자를 지우고 뒤집는다. 반복문에서 S의 길이와 T의 길이가 같은 경우 반복을 멈춘다. S와 T를 비교해서 같으면 1 다르면 0을 출력시킨다. 정답 코드 #include #include #include #include using namespace std; int main() { string S, T..

Algorithm 2021.07.27

[백준 11047] 동전0

동전 0 문제설명 첫 줄에 N,K를 입력 받고 N은 동전의 종류 수 이고, K는 맞추는 금액이다. 최소한의 동전으로 금액을 구성하여 필요한 동전 수의 최소 값을 출력시킨다. 알고리즘 필요한 값들을 입력 받는다. 최대한 빨리 찾기 위해서 오름차순으로 정렬된 동전들을 뒤 부터 조회한다. 금액 K를 동전으로 나누어서 sum에 몫을 저장한다. 나머지를 K에 다시 대입한다. 반복문을 통해서 최소한의 동전을 구한다. #include #include using namespace std; int arr[11]; int main() { int n,k,cnt=0; cin >> n >> k; for (int i = 0; i > arr[i]; for (int i = n-1; n>=0 ; i--) {..

Algorithm 2021.07.27

[프로그래머스] 큰 수 만들기(Greedy)

큰 수 만들기 문제설명 K만큼 문자열의 숫자를 지워서 가장 큰 수를 만든다. number 문자열을 통해 input이 정해진다. K개의 수를 지워서 number의 순서 변환 없이 가장 큰 수를 만들어내야한다. 첫 시도!! 처음에는 가장 작은 수 들을 지워서 만들면 된다고 생각했는데, 그런 경우에는 자리수를 고려하지 않아서 가장 큰 수가 생기지 않는다. 따라서 앞부터 수를 읽으면서 가장 큰 수를 찾아서 답을 만드는 방식으로 진행해야한다. #include #include #include #include #include #include #include using namespace std; string solution(string number, int k) { string answer=""; int remaind..

Algorithm 2021.07.27