알고리즘33 2217. 로프 그리디 문제이다. 1. 문제 풀이 2. Solution 1. 문제 풀이 필자는 로프 문제를 그리디로 해결했다. 필자가 생각해 낸 로프 문제의 탐욕법은 "정렬을 통해 k를 계산 + 각 로프당 들 수 있는 최소 중량을 이용하자" 이다. 예제 문제를 보면, 2개의 로프에 대해 각각 20, 25의 중량을 들 수 있다. -1개의 로프를 포함하는 경우: 최대 25 중량 가능 -2개의 로프를 포함하는 경우: 최대 40 중량 가능 단, 각 로프당 들 수 있는 최소 중량 = w/k (40중량/2개 = 20중량)을 만족해야 한다. 그렇기 때문에, 필자는 로프 문제를 해결하기 위해 1) 우선 로프가 들 수 있는 무게를 정렬 (오름차순 정렬) * 이때, 정렬을 안 하면, rope[i] MAX) ? w : MAX; } retu.. 2023. 1. 29. 11399. ATM 그리디 문제이다. 1. 문제 풀이 2. Solution 3. 알아야 할 개념 1. 문제 풀이 필자는 ATM 문제를 그리디 문제로 해결했다. ATM 문제에서 탐욕법은 "시간이 적게 걸리는 사람부터 ATM 사용하기" 이다. ATM 문제에서는 1번으로 ATM을 사용하는 사람이 N번 사용시간이 더해지고, 2번 사람은 N-1번 사용시간이 더해지고,,,, N번 사람은 1번 더해지기 때문이다. 2. Solution // 백준 11399 ATM #include #include #include using namespace std; int minTime(int N, vector& person) { // 시간이 적게 걸리는 사람이 앞으로 오도록 정렬 sort(person.begin(), person.end()); // 총 .. 2023. 1. 29. 2839. 설탕 배달 1. 올바른 풀이 2. 깔끔한 Solution 3. 나의 Solution 그리디 문제이다. (선택의 순간마다 당장의 눈 앞에 보이는 최적의 선택을 함) 1. 올바른 풀이 최소의 설탕봉지를 선택해야 한다. 필자는 이 문제를 해결하기 위해 "모든 경우의 수를 탐색해야 한다"에만 초점을 맞추어 잘못된 문제 풀이를 했다. 필자가 생각하는 올바른 문제 풀이는 "탐욕적으로 선택하기"이다. 그렇다면, 설탕봉지 문제에서 탐욕적인 선택은 "5kg 설탕봉지부터 가지기"이다. 예시로 30Kg 설탕봉지는 5kg 만으로 가져가면 6개의 설탕봉지를 배달하고, 3kg 만으로 가져가면 10개의 설탕봉지를 배달한다. 2. 깔끔한 Solution 알고리즘 문제를 풀 때, 깔끔한 코드를 보며 배우는 것은 중요하다고 생각한다. 아래의 코드.. 2023. 1. 29. [2023 Kakao] 개인정보 수집 유효기간 1. 해결방법 2. Solution 코드 1. 해결방법 문자열 관련 함수를 익히지 않은 탓으로 총 6시간이 소요되었다. (1차도전 - 1시간 20분) (2차도전 - 1시간 40분) (3차도전 - 3시간) 그리고 조건문이 아닌 산술연산을 통해 날짜를 비교함으로써 모든 테스트케이스를 해결했다. 문제는 아래와 같이 해결하였다. 주어진 문자열 vector privacies를 1)개인정보 수집날짜 string pri_date, 2)개인정보 약관 종류 string pri_type으로 문자열을 나눠야 한다. (std::basic_string::substr() 함수 이용) 그리고 개인정보 약관 종류를 통해 vector term 에서 매칭되는 약관 종류의 유효기간을 알 수 있다. 더보기 // std::basic_stri.. 2023. 1. 9. 이전 1 2 3 4 ··· 9 다음