Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 5430 java
- 자바
- 1389자바
- 1389 JAVA
- 1012 java
- 백준 유기농 배추
- 백준 1012 java
- Ubuntu USB부팅
- 백준 1389 자바
- Expo
- 1012 자바
- 백준 1012 자바
- BFS
- mobaXTerm
- 백준 2615
- 퇴사
- React Native
- 노트북 서버
- 백준
- ubuntu
- 1697 자바
- 백준 1697 자바
- 알고리즘
- 백준 5430자바
- 5430자바
Archives
- Today
- Total
삽질메모장
백준 1541 번: 잃어버린 괄호(java) 본문
문제
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
난이도 : 실버2
유형 : 그리디, 파싱
접근법
식을 최솟값으로 만들어야 하므로 -기호가 붙은 수들 이후는 모두 합산을 해야한다.
그러므로 -기준으로 식을 분리하고 분리된 각각의 식들은 최대한의 음수가 되기위해 합산해준다
1. 입력된 식을 StringTokenizer으로 받아 "-" 기준으로 식을 분리한다.
2. 분리된 각각의 토큰(식) 들을 합산한다.
3. 식의 첫번째값은 Integer.MAX_VALUE 와 같다면(식이 처음 입력되었다면) 대입, 이후는 위 2번 과정을 반복
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine(),"-"); // 먼저 "-"기준으로 식 분리
int result = Integer.MAX_VALUE;
while (st.hasMoreTokens()){
StringTokenizer plusSt = new StringTokenizer(st.nextToken(), "+"); // "-"기준으로 분리된 식을 각각 "+"으로 분해
int tempVal =0;
while(plusSt.hasMoreTokens()){
tempVal += Integer.parseInt( plusSt.nextToken()); //+로 분해된 식 합산
}
if(result == Integer.MAX_VALUE){ //첫번째 수
result = tempVal;
}else{ // 이후 - 될 뒷자리 수들
result -= tempVal;
}
}
System.out.println(result);
}
}
'Knowledge > 알고리즘' 카테고리의 다른 글
백준 1927 번: 최소힙 (java) - 직접 힙 구현 (2) | 2024.03.01 |
---|---|
백준 1697 번: 숨바꼭질 (java) (0) | 2024.02.21 |
백준 5430번: AC(java) (0) | 2024.01.17 |
백준 1389번 : 케빈 베이컨의 6단계 법칙(java) (0) | 2024.01.16 |
백준 1012 번 : 유기농 배추 (java) (0) | 2023.12.19 |