www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

이 문제를 풀기위해 생각을 해보자 뭔가 처음보는 듯한 유형이다.

일차원적인 생각은 최소로 만들기위해서는 -뒤에 절대값이 최대한 크게 괄호로 묶어주면 될 것이라고 생각된다.

package test;

import java.util.Scanner;

public class test {

	public static void main(String[] args) {
		int sum = Integer.MAX_VALUE;
		Scanner sc =new Scanner(System.in);
		String[] n = sc.next().split("-");
		
		for(int i=0;i<n.length;i++) {
			int tmp = 0;
			
			String[] add = n[i].split("\\+");
			
			for(int j = 0; j < add.length; j++) {
				tmp += Integer.parseInt(add[j]);
			}
			
			if(sum == Integer.MAX_VALUE) {
				sum = tmp;
			}
			else {
				sum -= tmp;
			}
		}
		System.out.println(sum);
	}
}

 

어떻게 해야할지 감이 안잡혀 다른 사람들이 짠 코드를 참고하였다.

문자열에서 -가 나오고 다음 -가 나오기전까지의 +들은 -로 바뀐다 결국 -가 나오는 시점부터 뒤는 쭉 -값이다.

신박한 문제였다 나름 재미있었고 이런 문제가 다시 나온다면 혼자만의 힘으로 풀어봐야겠다.

'알고리즘 with 자바 > 그리디' 카테고리의 다른 글

백준 10162 : 전자레인지 - JAVA  (0) 2021.03.17
백준 2217 : 로프 - JAVA  (0) 2021.03.17
백준 5585 : 거스름돈 - JAVA  (0) 2021.03.16
백준 11047 : 동전 0 - JAVA  (0) 2021.02.16
백준 11399 : ATM - JAVA  (0) 2021.02.16

+ Recent posts