-
백준 1541번: 잃어버린 괄호 (Python/Java)Algorithm/Algorithm Problem 2022. 1. 24. 23:34
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
접근
괄호를 묶는다는 의미만 알면 쉽게 풀 수 있는 문제다. 다들 알다시피 수학에서 괄호는 '먼저 계산한다'는 뜻이다. 그렇다면 덧셈이 있는 곳에 괄호를 쳐 숫자들을 더해준다면 나중에 뺄 때는 숫자 한 개를 뺄 때보다 훨씬 더 큰 수를 뺄 수 있게 된다. 즉, 가장 작은 수를 만들 수 있다.
구현 또한 간단하다. '-'를 기준으로 나눠준다. 그리고 그 나눠진 문자열을 다시 '+'를 기준으로 나눠준다. '+'를 기준으로 나눠서 나온 숫자들을 다 더한다. 나눠준 모든 문자열의 숫자들을 더해준다. 이제 이렇게 나온 숫자 중 가장 첫 번째 나온 숫자에 나머지 숫자를 모두 빼주면 해당 계산을 구현할 수 있게 된다.
풀이
Python
testcase = (input()).split('-') board = [] for i in range(len(testcase)): subSum = 0 for j in range(len(testcase[i].split('+'))): subSum += int(testcase[i].split('+')[j]) board.append(subSum) result = board[0] for i in range(1, len(board)): result -= board[i] print(result)
Java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); String[] testcase = (scan.nextLine()).split("-"); int result = 0; for(int i = 0 ; i < testcase.length ; i++){ int subSum = 0; for(int j = 0 ; j < (testcase[i].split("\\+")).length ; j++){ subSum += Integer.parseInt(testcase[i].split("\\+")[j]); } if(i == 0){ result = subSum; }else { result -= subSum; } } System.out.println(result); } }
'Algorithm > Algorithm Problem' 카테고리의 다른 글
백준 11509번: 풍선 맞추기 (Python/Java) (0) 2022.01.28 백준 4179번: 불! (Python/Java) (0) 2022.01.25 백준 2343번: 기타 레슨 (Python/Java) (0) 2022.01.23 백준 15729번: 방탈출 (Python/Java) (0) 2022.01.22 백준 3079번: 입국심사 (Python/Java) (0) 2022.01.21