본문 바로가기
알고리즘/백준

[백준 1541] 잃어버린 괄호

by binghe819 2020. 4. 3.

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

1. 풀이


문제에서 적절히 괄호를 넣으라고 하였으므로, 괄호가 있어도 되고 없어도 된다는 뜻입니다.

 

따라서 마이너스(-)가 나온 뒤 나오는 숫자들을 모두 더하고, 다음 마이너스(-)가 나오기 전 숫자에서 빼주면 됩니다.

 

입력값을 문자열로 받은 후, 마이너스를 기준으로 문자열을 잘라줍니다. 자른 문자열을 모두 더해줍니다. 마지막으로 전부 마이너스 해주면 됩니다.

 

문자열을 푸는 방식을 생각했는데, 다른 사람들의 풀이를 보니 수학적으로 푸는 방법도 있습니다.

 

2. 코드


import java.util.*;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		// 마이너스를 기준으로 잘라줍니다.
		String[] split_minus = sc.next().split("\\-");
		
		int result = 0;
		int tmpSum;
		for(int i = 0; i < split_minus.length; i++) {
			tmpSum = 0;
			// 플러스를 기준으로 잘라줍니다.
			String[] split_plus = split_minus[i].split("\\+");
			for(int j = 0; j < split_plus.length; j++) {
				tmpSum += Integer.parseInt(split_plus[j]);
			}
			
			if(i == 0) // 첫번째 숫자를 위한 처리.
				tmpSum *= -1;
			
			result-=tmpSum;
		}

		System.out.println(result);
		
		sc.close();
		return;
	}
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.04.03
[백준 1120] 문자열 - 자바  (0) 2020.04.03
[백준 2875] 대회 or 인턴  (0) 2020.04.03
[백준 10610] 30 - 자바  (0) 2020.04.03
[백준 2217] 로프 - 자바  (0) 2020.04.03

댓글