백준 1541번
https://www.acmicpc.net/problem/1541
문제설명
문자로된 식을 입력 받고 그 해당 식의 값이 최소로 만드는 괄호의 위치를 찾아서 계산 후에
최솟값을 출력한다.
접근
1. - 를 기준으로 문자열을 나눈다.
2. 나눠진 문자열들을 '+' 기준으로 나눈다음 각각 다 더한다.
3. 첫번째 값은 더해주고 나머지는 뺴주면서 최솟값으로 만든다.
코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String args[]) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] sb = bf.readLine().split("-");
int res = 0 ;
for(int i=0;i<sb.length;i++){
int temp=0;
String[] add = sb[i].split("\\+");
for(int j=0;j<add.length;j++){
temp+= Integer.parseInt(add[j]);
}
if(i==0){
res += temp;
}else{
res -= temp;
}
}
System.out.println(res);
}
}
풀이
최솟값이 되려면 큰 수들을 빼주면 되는데 +를 먼저 수행한다음 -를 수행한다면 최솟값이 나온다.
>> 처음 풀 때 split함수에서 "+"를 기준으로 split("+")를 사용해서 값이 이상하게 나왔다. << 주의
'알고리즘 > 백준 Baekjoon' 카테고리의 다른 글
(LEVEL 2)프로그래머스 - 튜플 (JAVA) [2019 카카오 개발자 겨울 인턴십] (0) | 2023.03.13 |
---|---|
백준 4963번 섬의 개수(JAVA) - DFS (0) | 2023.02.19 |
백준 2309번 일곱 난쟁이(JAVA) (0) | 2023.01.16 |
백준 9093번 단어 뒤집기(JAVA) (0) | 2022.12.27 |
백준 9095번 1,2,3 더하기 (C++) (0) | 2021.06.02 |