[BOJ] 백준 16496 큰 수 만들기 (JAVA)
Algorithm/- Baekjoon2024. 5. 23. 16:55[BOJ] 백준 16496 큰 수 만들기 (JAVA)

📑 문제🌱 아이디어숫자 정렬이 아닌 사전순(문자열) 정렬을 사용하자 "큰 수"의 기준이 아닌 사전순 정렬을 사용한다. 9, 30 두 숫자가 있다. 두 수를 조합하여 만들 수 있는 가장 큰 수는930이다. 즉 문자열 정렬을 통해 가장 뒤서는 순(30, 9)부터 숫자를 합치며 풀면 된다. 하지만 하나의 반례가 있다. 3,30 두 숫자가 있다. 두 수를 조합하여 만들 수 있는 가장 큰 수는 330이다.하지만 문자열 정렬 시 가장 뒤서는 번호가 30이 된다 (3,30) 위처럼 출력 시 303이라는 숫자가 만들어진다. 이미 정렬된 문자열에서 앞의 숫자 '3', '3'0 같을 경우 330, 303이 큰지 판단하고, 결괏값에 따라 문자열을 서로 변경해 주는 형식으로 풀면 된다. 입력 값으로 1,000,000,00..

[BOJ] 백준 1781 컵라면 (JAVA)
Algorithm/- Baekjoon2024. 2. 27. 18:11[BOJ] 백준 1781 컵라면 (JAVA)

📑 문제🌱 아이디어데드라인 별 가장 최적의 값을 선택하여 최댓값을 출력하는 문제! 그리디 알고리즘이다! 정렬속도가 빠른 우선순위 큐를 이용해 보자! 문제 자체는 이해하기도 쉽고 어렵지 않았다. 덕분에 그리디, 우선순위큐를 이용하면 되겠다는 생각도 빨리 도출해 내었던 문제이다.하지만 깊게 생각을 해야 하는 문제였다 ㅠ 다음 예제를 보자 반례 1) 41 502 303 603 70ans = 180 가장 처음 구현했을 때 데드라인을 1 ~ N까지 오름차순 데드라인별 최적값을 구하는 형식으로 풀었지만결과는 150이 나왔다. 50 + 30 + 70 이렇게 컵라면을 획득한 것이다. 하지만 문제의 정답은 50 + 60 + 70 = 180 이다. 즉 가장 낮은 데드라인이 항상 최적의 값을 보장하지 않기 때문에N ~ ..

image