[BOJ][Java] 1744번 수 묶기
·
PS
문제 링크 : https://www.acmicpc.net/problem/1744 위의 문제는 주어진 수열에서 수끼리 묶거나(곱하거나) 또는 그냥 더해서 최대합을 구하는 문제입니다.최댓값을 구하기 위해서는 양수에서는 가장 큰 값과 그다음으로 큰 값을 곱해서 더하는 게 좋지만 만약 해당 양수가 1일 경우에는곱하지 않고 그냥 더하는 게 더 큰 값이 됩니다. 음수에서는 내림차순으로 정렬하여 가장 작은 값과 그다음 작은 값을 곱해 더해줘야 합니다.양수와는 다르게 음수에서는 -1이라고 하더라도 무조건 음수와 곱해준 뒤 더해주는 게 더 큰 값을 더할 수 있습니다.이때 만약 같은 음수에서 짝지을 수가 없을 경우 0이 있다면 0과 곱해주는 것이 더 큰 값을 더할 수 있게 됩니다. 따라서 0보다 큰 양의 정수를 모은 pl..
[BOJ] 1715번 카드 정렬하기
·
PS
문제 링크 : https://www.acmicpc.net/problem/1715 문제를 처음 접하고 예제 입력만을 가지고 단순히 생각해 보면 숫자 카드 묶음을 1차원 배열로 만들고 이를 오름차순 정렬해서 앞에서부터 더해 나가면 되지 않을까 생각할 수 있지만그건 오름차순으로 정렬하고 가장 작은 값들 2개를 골라 더한뒤 그다음 작은 값이 배열의 다음 값인 경우에만 가능하다예를 들어 문제의 예제처럼 10, 20, 40 일 경우에는(10 + 20) = 30 이고 해당 값 다음으로 큰 값이 40이기 때문에 단순 1차원 배열에서 오름차순 정렬로 풀 수 있다. 하지만 만약 주어진 카드 묶음이 10, 10, 10, 10, 10이라고 하면오름 차순 정렬 후 가장 작은 2개의 값은 10, 10 이기때문에 둘을 합치면 20..