728x90
반응형
2024.07.28기준 - 실버2
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 입력된 수식에서 괄호를 이용해서 가장 작은 수를 만드는 문제입니다.
1. 입력받은 문자열을 +, -를 기준으로 분류를 해주었습니다.
StringTokenizer st = new StringTokenizer(br.readLine(), "+-", true); // +와 -를 기준으로 분리하며 +, -도 리턴해서 받는다.
2. 입력받은 문자열들 중에서 -를 찾아 수식을 계산을 진행합니다.
※ -가 한번 들어오는 순간 부터는 무조건 -를 할 수 있어 첫 번째 -를 기준으로 앞에는 더 해주며, 뒤에는 빼주었습니다.
int sum = 0;
boolean check = false; // - 체크
String s;
while (st.hasMoreElements()) {
s = st.nextToken();
if (s.charAt(0) != '-' && s.charAt(0) != '+') { // 숫자일때
if (check) {
sum -= Integer.parseInt(s);
} else {
sum += Integer.parseInt(s);
}
} else if (!check) { // -가 한번 들어오면 무조건 뺄 수 있다.
if (s.equals("-")) { // -가 들어오면 true
check = true;
}
}
}
코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine(), "+-", true); // +와 -를 기준으로 분리하며 +, -도 리턴해서 받는다.
int sum = 0;
boolean check = false; // - 체크
String s;
while (st.hasMoreElements()) {
s = st.nextToken();
if (s.charAt(0) != '-' && s.charAt(0) != '+') { // 숫자일때
if (check) {
sum -= Integer.parseInt(s);
} else {
sum += Integer.parseInt(s);
}
} else if (!check) { // -가 한번 들어오면 무조건 뺄 수 있다.
if (s.equals("-")) { // -가 들어오면 true
check = true;
}
}
}
bw.write(Integer.toString(sum));
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31432번 소수가 아닌 수 3 (0) | 2024.07.29 |
---|---|
BEAKJOON / 백준 - JAVA 24482번 알고리즘 수업 - 깊이 우선 탐색 4 (0) | 2024.07.29 |
BAEKJOON / 백준 - JAVA 11403번 경로 찾기 (0) | 2024.07.27 |
BEAKJOON / 백준 - JAVA 21567번 숫자의 개수 2 (0) | 2024.07.26 |
BAEKJOON / 백준 - JAVA 1004번 어린 왕자 (2) | 2024.07.26 |