BaekJoon 1541 문자열 처리
이번 문제는 잃어 버린 괄호라는 문제입니다. 보통 괄호문제는 스택과 관련이 있는 문제들이 많지만 이번에는 아닌 것 같아요. 문제 주소는 밑에 있으니 확인해보세요^^
https://www.acmicpc.net/problem/1541
최소 값을 만드는 방법은 앞에서 부터 체크하면서 - 뒤에 (를 치고 다음 - 이전에 )를 닫는 방법입니다 . 예를 들면
12 - 34 + 12 + 13 + 33 - 44
이렇게 있다고 하면 다음과 같이 만드는게 최소가 되겠지요?
12 -( 34 + 12 + 13 + 33 ) - 44
이문제는 문자열을 처리하는데 좀 까다로운 문제라고 생각해요 다음은 제가 짠 코드입니다.
https://www.acmicpc.net/problem/1541
최소 값을 만드는 방법은 앞에서 부터 체크하면서 - 뒤에 (를 치고 다음 - 이전에 )를 닫는 방법입니다 . 예를 들면
12 - 34 + 12 + 13 + 33 - 44
이렇게 있다고 하면 다음과 같이 만드는게 최소가 되겠지요?
12 -( 34 + 12 + 13 + 33 ) - 44
이문제는 문자열을 처리하는데 좀 까다로운 문제라고 생각해요 다음은 제가 짠 코드입니다.
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import java.util.Arrays; import java.util.Scanner; public class BaekJoon1541 { static String str; static char[] chars = new char[10]; static String[] strs = new String[55]; static String[] numbers = new String[55]; static boolean isMinus; static int Answer, o, m, sLength, t; public static void main(String[] args) { Scanner sc = new Scanner(System.in); isMinus = false;Arrays.fill(numbers, ""); str = sc.nextLine();o = 0;m = 0; t = 1; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == '-' || str.charAt(i) == '+') { // 연산자라면 strs[]의 홀수 index에 부호를 위치 시킴 strs[t] = "" + str.charAt(i); t += 2; for (int j = 0; j < o; j++) { //숫자를 numbers[]에 순서대로 넣음 numbers[m] += chars[j]; } m++; o = 0; }else {// 연산자가 아니라면 chars[] 숫자를 누적시킴, 하나의 숫자가 들어감 chars[o++] = str.charAt(i); } } for (int i = 0; i < o; i++) { numbers[m] += chars[i]; } m++; for (int i = 0; i < m; i++) { strs[i * 2] = numbers[i]; } sLength = m * 2 - 1; // 숫자와 부호가 구별되는 String array가 만들어짐 Answer = Integer.parseInt(strs[0]); for (int i = 1; i < sLength; i++) { if (isMinus) { if (strs[i - 1].equals("+")) { Answer -= Integer.parseInt(strs[i]); } else if (strs[i - 1].equals("-")) { Answer -= Integer.parseInt(strs[i]); } }else { if (strs[i - 1].equals("+")) { Answer += Integer.parseInt(strs[i]); }else if (strs[i - 1].equals("-")){ isMinus = true; Answer -= Integer.parseInt(strs[i]); } } } System.out.println(Answer); } } |