알고리즘 문제 풀이34 [프로그래머스] 구명보트 programmers.co.kr/learn/courses/30/lessons/42885?language=java 문제 해석 최대 2명밖에 탈 수 없다 무게 제한 만큼의 사람만 탈 수 있다 구명보트를 최대한 적게 사용해서 모든 사람을 구출해야 한다 제한사항 무인도에 갇힌 사람은 1명 이상 50,000명 이하입니다. 각 사람의 몸무게는 40kg 이상 240kg 이하입니다. 구명보트의 무게 제한은 40kg 이상 240kg 이하입니다. 구명보트의 무게 제한은 항상 사람들의 몸무게 중 최댓값보다 크게 주어지므로 사람들을 구출할 수 없는 경우는 없습니다. 문제 풀이 핵심은 2명만 탈 수 있다는것 따라서 최대 몸무게를 가진 사람부터 한명씩 데려갈 수 있는 사람을 데려가면 된다 꼭 제한을 최대한 채울 필요는 없다 10.. 2021. 4. 8. [프로그래머스] 정수 삼각형 - JAVA https://programmers.co.kr/learn/courses/30/lessons/43105?language=java#_=_ 문제 해석 정수 삼각형 최상단에서 왼쪽 또는 오른쪽으로 내려가면서 값을 더해갈때 가장 최댓값은? 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 문제 풀이 모든 경우의 수를 해본다면? O(2^n) 내려가면서 왼쪽 또는 오른쪽 숫자를 사용했을때 최댓값만 남긴다 O(n^2) 최대값을 구할때 sorting을 사용해도 된다 Arrays.sort(arr); //내림차순 Integer []arr = {1, 2, 0}; Arrays.sort(arr, Collections.reverseOrder()); class .. 2021. 4. 3. [백준]1로 만들기 - 복습 https://www.acmicpc.net/problem/1463 각 단계별 3가지 경우의 수가 있으니 10^6 숫자를 전역탐색하기에는 시간이 부족하다 1을 만드는게 목적이니 1에서부터 3가지 방법을 사용하면서 값을 만들면서 최소 횟수만 남겨서 기록한다 #include #include #include using namespace std; int N; int cache[1000001]; void solve(int x) { if (x > N) return; int& ret = cache[x]; ret = cache[x - 1] + 1; if (x % 2 == 0) ret = min(ret, cache[x / 2] + 1); if (x % 3 == 0) ret = min(ret, cache[x / 3] + 1.. 2021. 3. 31. [백준]그룹 단어 체커 - 백준 https://www.acmicpc.net/problem/1316 알파벳 체크배열 만들어두고 이미 채크된 알파뱃을 다시 사용하는지 확인 #include #include #include using namespace std; string input[101]; int alpha[26]; int main() { int N; cin >> N; for (int i = 0; i > input[i]; } int cnt = 0; for (int i = 0; i < N; i++) { memset(alpha, 0, sizeof(alpha)); int isGroup = true; for (int j = 0; j < input[i].length(); j++) { char c = input[i][j.. 2021. 3. 31. 이전 1 2 3 4 5 6 ··· 9 다음