알고리즘/문제 [BOJ/백준 - 1541] 잃어버린 괄호 - 문제 출처: https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters public class BOJ_1541 { public static void main(String[] args) throws Exception{ // INPUT & INIT BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); StringBuilder sb = new StringBuilder(); int answer = 0; ArrayList<Integer> num = new ArrayList<>(); ArrayList<Integer> op = new ArrayList<>(); for(int i=0; i<str.length(); i++) { char c = str.charAt(i); if(c=='+') { op.add(1); num.add(Integer.parseInt(sb.toString())); sb.setLength(0); }else if(c=='-') { op.add(-1); num.add(Integer.parseInt(sb.toString())); sb.setLength(0); }else { sb.append(c); } } num.add(Integer.parseInt(sb.toString())); // 마지막 숫자 // CALCULATE boolean hasMinus = false; for(int i=0; i<num.size(); i++) { if(i==0) { answer += num.get(i); continue; } if(op.get(i-1) == -1) { answer -= num.get(i); hasMinus = true; }else { if(hasMinus) { answer -= num.get(i); }else { answer += num.get(i); } } } // OUTPUT System.out.println(answer); } } view raw BOJ_1541.java hosted with ❤ by GitHub 풀이의 아이디어는 빼기 연산자가 보이는 순간부터 뒤에 숫자는 연산자와 상관없이 무조건 다 빼버린다 이건 괄호가 어떻게 쳐지는 것이 관심이 있는게 아니다 빼기 연산자가 나오는 순간 그 뒤에 양수들을 묶어서 가장 작은 최소값을 만들 수 있기 때문이다 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Time to lazy Contents 당신이 좋아할만한 콘텐츠 [BOJ/백준 - 2805] 나무 자르기 2022.01.14 [BOJ/백준 - 1715] 카드 정렬하기 2022.01.13 [BOJ/백준 - 10845] 큐 2022.01.11 [BOJ/백준 - 15829] Hashing 2022.01.11 댓글 0 + 이전 댓글 더보기