728x90
https://www.acmicpc.net/problem/25496
문제를 읽어보면 그리디 문제라는 걸 쉽게 알 수 있다.
나의코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
int result = 0;
//입력받기 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine().strip());
int fatigue = Integer.parseInt(st.nextToken());
Integer.parseInt(st.nextToken());
String line = bf.readLine().strip();
String[] arr = line.split(" ");
List<Integer> intArr = new ArrayList<>();
for (String str : arr) {
intArr.add(Integer.parseInt(str));
}
//입력 끝 ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
while (fatigue < 200 && intArr.size() > 0) {
Integer minFatigue = Collections.min(intArr);
intArr.remove(minFatigue);
fatigue += minFatigue;
result += 1;
}
System.out.println(result);
}
}
- 초기 피로도와 장신구를 만들 때 피로도 등을 입력으로 받는다
- 피로도가 200 미만이고 남은 장신구 개수가 0보다 클 때 while문을 수행한다
- 장신구 중 가장 피로도가 적게드는 장신구를 뽑고 제거한다
- 현재 피로도에 해당 피로도를 더하고
- result 를 1 증가시켜준다
백준은 자바 11만 있어서 stream을 사용했더니 알 수 없는 문법이라고 나왔다. 그래서 for문을 사용하여 작성했다.
array가 0인 경우를 고려하지 않아 런타임 에러가 많이 났다. (NoSuchElement)
챗 지피티 코드
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// P와 N 입력 받기
StringTokenizer st = new StringTokenizer(br.readLine());
int p = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
// 각 장신구의 피로도 입력 받기
st = new StringTokenizer(br.readLine());
int[] fatigue = new int[n];
for (int i = 0; i < n; i++) {
fatigue[i] = Integer.parseInt(st.nextToken());
}
// 제작 가능한 장신구 개수 구하기
int maxJewelryCount = 0;
int currentFatigue = 0;
for (int i = 0; i < n; i++) {
currentFatigue += fatigue[i];
if (currentFatigue < p) {
maxJewelryCount++;
} else {
break;
}
}
// 결과 출력
System.out.println(maxJewelryCount);
}
}
chat gpt가 어떻게 푸는지 궁금하여 한 번 물어봤다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 2217 로프 - 실버4 (0) | 2023.07.12 |
---|---|
[Java] 백준 2839 설탕 배달 - 실버4 (0) | 2023.07.12 |
[Java] bfs 실버모음4 (2) | 2023.02.22 |
백준 1026 보물, 1049 기타줄 파이썬 python (2) | 2023.02.15 |
[Java] bfs 실버모음3 (0) | 2023.02.11 |