목록greedy (3)
algoqna
8980번: 택배 입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이 www.acmicpc.net - Greedy를 이용한 문제풀이 - 받는 마을이 보내는 마을과 가까울 수록 유리하다. - 보내는 마을 순서대로 보낸다면 1 ~ 끝 지점이 넣을 수 있는 용량이 최대인 경우 택배를 한 개 밖에 못넣는 상황임 - 받는 마을 순서대로 정렬하여 문제를 풀이한다 1. 각 지점마다 용량을 초기화해둔다 : 1 ~ N 지점 각각의 용량은 모두 C로 초기화하는 배열을 준다 2.정렬되있는 배열을 차례대로 탐방하여 시작점 ~ 도착지점 전까지 가져올 수 있는 택..
21314번: 민겸 수 민겸 수 하나가 주어진다. 민겸 수는 대문자 M과 K로만 이루어진 문자열이며, 길이는 3,000을 넘지 않는다. www.acmicpc.net - Greedy 문제 - 최댓값을 보장하게 배치하는 방법과 최솟값을 보장하게 배치하는 방법 고민 - 최댓값 K를 만난 경우 무조건 5를 붙이고 시작하고, M을 만난 경우는 K를 만나기 전까지는 누적해둔다. MMM의 경우 100이 아닌 111이 나오도록 해야한다. - 최솟값 K를 만난 경우 직전에 M으로 표현된 것들이 있었다면 모두 M을 1을 붙인 형태로 변형하고, 마지막에 K를 붙인다 MMM의 경우 최댓값과 달리 111이 아닌 100이 나오도록 해야한다. [주석 설명 참고] import java.io.BufferedReader; import ..
SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com D3문제에서 유독 정답률이 낮길래 포스팅합니다. n : 수업을 들어야 할 개수 ( 1 tc; for (int k = 1; k > n; for (int j = 0; j > arr[j]; if (arr[j] == 1) sum++; } int ans = 0; if (n % sum == 0) { ans = ans + ((n / sum) - 1) * 7; n = sum; } else { ans = ans + ((n / sum)) * 7; n = n % sum; } int mindate = 999999999; for (int i = 0; i