Baekjoon/그리디 알고리즘
[11399] ATM
https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 🔎 해결 방법 오랜만에 한번에 맞은 문제 ㅋㅋ 문제를 읽어보면 바로 어떻게 풀어야 하는지 감을 잡을 수 있다. 줄을 [2, 5, 1, 4, 3] 순서로 세우는 것은 결국 돈을 인출하는데 걸리는 시간을 [1, 2, 3, 3, 4] 와 같이 오름차순으로 정렬하겠다는 소리이다. 그래서 중첩 for문을 사용해서 그냥 다 더해주면 끝~ 💡 내 코드(C++) // [11399] ATM // https://www.acmicpc.net/pr..
[11047] 동전 0
https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 그리디 알고리즘을 사용하는 문제! 그냥 간단한 문제였다. 💡 내 코드(C++) // [11047] 동전 0 // https://www.acmicpc.net/problem/11047 // 그리디 알고리즘 #include using namespace std; int main(void) { int n, k; // 준규가 가지고 있는 동전의..
[1931] 회의실배정
https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 그리디 알고리즘을 사용하는 문제.... dp문제를 많이 풀다가 그리디 알고리즘 문제를 풀려고 하니 자꾸 dp식으로 접근하는 바람에 시간초과가 계속 났었다. 그리디 알고리즘이란, 현재 상태에서 가장 최선의 선택인 것만 골라서 진행하는 알고리즘이다. 즉 다른건 아무것도 생각하지말고 그냥 현재 상태에만 집중하면 되는 것이다. 🔎 해결방법 1. 회의 시작 시간을 기준으로 오름차순 정렬, 시작 시간이 같다면 끝나는 시간이 빠른 것부터 정렬(sort 함수 사용) 2. tmp을 회의가 가장 늦게 시작하는 시간으로 초기화 3. ..
[11501] 주식
https://www.acmicpc.net/problem/11501 11501번: 주식 문제 홍준이는 요즘 주식에 빠져있다. 그는 미래를 내다보는 눈이 뛰어나, 날 별로 주가를 예상하고 언제나 그게 맞아떨어진다. 매일 그는 아래 세 가지 중 한 행동을 한다. 주식 하나를 산다. 원하는 만큼 가지고 있는 주식을 판다. 아무것도 안한다. 홍준이는 미래를 예상하는 뛰어난 안목을 가졌지만, 어떻게 해야 자신이 최대 이익을 얻을 수 있는지 모른다. 따라서 당신에게 날 별로 주식의 가격을 알려주었을 때, 최대 이익이 얼마나 되는지 계산을 해달라고 부탁 www.acmicpc.net 💡 내 코드(C++) /*[11501] 주식*/ #include #define MAX 1000001 using namespace std;..