본문 바로가기

전체 글45

[백준 1049] 기타줄 https://www.acmicpc.net/problem/1049 해설 이번 문제는 그리디 문제이다. 6줄 세트의 가격 중에서 가장 싼 브랜드를 pp, 낱개 중 가장 싼 브랜드를 ii 로 두었다. i) (n+1) * pp 가 n*ii 보다 작은 경우가 있을 수 있으므로 (n+1)*pp ii) pp와 ii를 적절히 사용하는 n/6*pp + n%6*ii iii) ii로만 n을 만드는 경우 n*ii 총 3가지 경우에서 최솟값을 구해주었다. ˙˙˙ 소스코드 #include using namespace std; int main(){ int n,m; cin >> n >> m; int pp=54321, ii=54321; while(m--){ int a,b; cin >> a >> b; if(a 2020. 3. 25.
[백준 1946] 신입 사원 https://www.acmicpc.net/problem/1946 해설 이번 문제는 그리디 알고리즘을 사용하는 문제이다. 문제에서 중요한 문장은 "두 성적 순위는 모두 1위부터 N위까지 동석차 없이 결정된다고 가정한다." 이 부분이었던 거 같다. 일단, 이 문제를 보고 헷갈릴 수 있는 데, "각각의 지원자의 서류심사 성적, 면접 성적의 순위" 이 문장만 보고는 서류 심사 성적이랑 면접 성적 순위가 주어지겠구나 라고 오해할 수있다. 입력에서는 서류 심사 성적 순위와 면접 성적 순위가 주어진다. 난 이 문제를 풀 때 i) 서류 심사 성적으로 정렬 ii) 동석차가 없으니 0번 배열은 무조건 합격이라서 cnt를 1로 세팅 해놓았다. iii) 그 다음 for문을 1번 배열부터 돌려 자신의 면접 성적 순위가 vp[.. 2020. 3. 24.
[백준 11399] ATM https://www.acmicpc.net/problem/11399 해설 이번 문제는 그리디를 적용하는 문제이다. 예제에서 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우 줄을 [2,5,1,4,3] 으로 서게 되면 최소가 된다고 하였다. 여기서 중요한 점은 [2, 5, 1, 4, 3]으로 줄을 서면 1,2,3,3,4 로 값이 정렬된다는 점이다. 그렇다. 받는 값을 정렬 시켜 더해주면 된다. ˙˙˙ 소스코드 #include #include #include using namespace std; int main(){ vectorg; int n; cin >> n; for(int i=0, a; i> a, g.push_back(a); sort(g.begin(), g... 2020. 3. 24.
[C++ STL] Pair를 중첩해서 사용해보자. 먼저, pair를 처음 접해본다면 옆에 링크를 보고 오길 바란다. ( 참고 : https://far-simple.tistory.com/24 ) 사용법 선언 : pair 이름 저장 : 이름 = make_pair(값, make_pair(값, 값)); 출력 : cout 2020. 3. 24.