본문 바로가기
백준/그리디

백준 1541. 잃어버린 괄호

by 29살아저씨 2021. 8. 17.
반응형

🅰 백준 1541. 잃어버린 괄호

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

✏️ 문제 풀이

  • 식의 값을 최소로 만들려면 +를 먼저 수행하고 -를 수행하면 식의 값이 최소가 된다.
  • 1. 읽어온 문자열을 .split을 이용하여 '-' 단위로 문자열을 나눠서 저장한다.
  • 2. 나눠진 문자열을 다시 '+' 단위로 문자열을 나눠서 각 배열을 더해서 sum에 저장한다.
  • 2-2. i가 0일때 제일 첫 시작이므로 max에 더하고 나머지 sum값들은 max-=sum을 해줘서 연산의 최소값을 구해주었다.

✏️ 소스코드

package greedy;

import java.io.*;
/*
 * 덧셈 먼저 수행한 후 뺄셈을 수행하면 최소값이 나온다.
 * */
public class Main_실버2_1541_손은성 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int max = 0;

//		-를 이용하여 문자열을 분리하여 저장
		String count[] = br.readLine().split("-");

//		count만큼 split(+)를 해줘서 그 값을 더해서 최소값 계산
		for (int i = 0, end = count.length; i < end; i++) {
			int sum = 0;
			String plusCount[] = count[i].split("\\+");

			for (int j = 0; j < plusCount.length; j++) {
				sum += Integer.parseInt(plusCount[j]);
			}

			if (i == 0) { // 제일 처음 값 저장
				max = sum;
			} else {
				max -= sum;
			}
		}
		System.out.println(max);
	}
}

 

✅ 후기

  • 그리디 알고리즘은 각 케이스마다 최적의 조건을 찾아내는 것이 어려운 것 같다. 어떻게 구현할지에 대한 어려움도 있었지만 문제를 어떻게 접근해야 하는지에 더 많은 고민을 해봐야 할 것 같다.
반응형

'백준 > 그리디' 카테고리의 다른 글

백준 2875. 대회 or 인턴  (0) 2021.08.18
백준 1744. 수 묶기  (0) 2021.08.17
백준 11399. ATM  (0) 2021.08.17
백준 1931. 회의실 배정  (0) 2021.08.17
백준 11047. 동전  (0) 2021.08.17

댓글