그리디 4

📑 프로그래머스_광물캐기_Day7

알고리즘 챌린지 7일차이다. 오늘로서 설 연휴 마지막날이기도 하다. 스스로 자제하고 덜 나간것도 있긴하지만 약속이 좀 적었어서 집에서 알고리즘을 풀 수 있었던것 같다 ㅋㅋ 오늘은 프로그래머스 Level2로 분류된 광물 캐기 문제를 풀어보았다. 동적 계획법은 아니지만 그리디 알고리즘을 사용해서 풀이했다. 문제에서 주어진 조건만 잘 분석하면 풀 수 있는 쉬운 문제였다. 세 개의 곡괭이 중에서 하나를 골라(=그리디 알고리즘) 최소 피로도를 구한다. 한 곡괭이로 최대 5개의 광물을 캘 수 있다, 선택한 곡괭이는 다 쓸때까지 바꿀 수 없다. (= 5개씩 그룹화) 곡괭이를 다 쓰거나 광물을 다 캔 경우 종료한다. (= 반복의 탈출 조건) 코드의 주석을 달아놓았으니 이해가 어렵지 않을 것 같지만 핵심 로직을 간단히 ..

📑 정렬_1202_보석 도둑

오늘도 정렬로 분류되는 알고리즘 문제를 풀어보도록 하자. 문제의 난이도가 골드 2로 올라와서 그런지 따져야 할 조건도 많고, 풀이도 떠올리기가 간단하지는 않았다. 기본 베이스는 정렬과 그리디 알고리즘이지만, 이번 문제는 우선순위 큐라는 자료구조를 적당히 잘 사용해서 풀어야 한다. https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net 1. 문제 분석 보석의 수 N과 가방의 수 K의 최댓값이 ..

📑 정렬_1946_신입사원

오늘 풀이해 볼 문제는 지난 시간과 동일하게 그리디 알고리즘을 적용하는 정렬파트의 문제이다. 지난 번에 풀었던 보물보다는 한 번더 생각을 해야 하지만 크게 복잡하지는 않으니 문제부터 보도록 하자. https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 분석 최대한 많은 신입사원을 뽑아야 한다. 뽑힌 신입사원들 끼리는 우열을 가릴 수 없어야 한다. 우열을 가릴 수 없다 : 서류 혹은 면접이 나와 다른 한 사람과 비교했을 때 반..

📑 정렬_1026_보물

연초에 계획했던 바와는 다르게 또 다시 귀찮음이 용솟음 치며 열심히 알고리즘을 풀고 정리하겠다 했던 다짐이 한 동안 죽어있다가 연말이 되어서야 다시 살아난다. 나름 직장인이 된지도 어언 만 2년차를 바라보고 있는 시점에 진짜로 다시금 마음을 잡고 꾸준히 공부를 하고자 한다. 매일 공부를 할 수 있는 주기적인 시간이 나오는 것은 아니지만, 시간이 되는 날에라도 놀지 않고 한 문제씩이라도 문제를 풀면서 개념을 정리하고자 한다. 오늘 풀어볼 문제는 백준 1026에 속해 있는 정렬 파트 문제이다. https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N..