반응형
https://www.acmicpc.net/problem/1541
그리디 알고리즘이란?
가장 최선의 선택을 하는 알고리즘이다.
주의할점은 항상 최적의 값을 보장하진 않는다.
Scanner VS BufferedReader
자바 코테에서 입력받는 데이터를 처리하는 2가지 방법.
BufferedReader가 코테에서 사용하기에 더좋다.
이유는 입력받는 시간을 단축시켜 제한시간내에 풀수있게 해준다.
입력받는 데이터량이 많을 수록 차이가 많이난다.
https://youtu.be/o0bM23DTXBw?si=17Ilx3-QAw2X_myh
BufferedReader 사용
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
readLine 함수로 한줄씩 String 형태로 받을수 있음.
다른형태로 쓰려면 파싱 작업 필요.
소스코드
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
// 가장 작은 값을 만드려면 가장 큰값을 만들어야함
// 가장 큰값을 만들기위해 "+" 문자 기준으로 split 한것들을 다 더함
// "-" 문자 기준으로 split 한것들을 다 빼면 가장 최소값을 만들수 있음.
String[] split = str.split("-");
ArrayList<Integer> arrayList = new ArrayList<>();
for (String x : split) {
int sum = 0;
String[] splitPlus = x.split("\\+");
for (String s : splitPlus) {
sum += Integer.parseInt(s);
}
arrayList.add(sum);
}
int answer = arrayList.get(0);
for (int i = 1; i < arrayList.size(); i++) {
answer -= arrayList.get(i);
}
System.out.println(answer);
}
}
반응형
'2024 > 코딩테스트' 카테고리의 다른 글
[알고리즘] 투포인터 (0) | 2024.07.09 |
---|