반응형
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다.
www.acmicpc.net
임의로 숫자를 써보았습니다.
3+2-3+4-3-3+4+5+3-4 이런 경우에
3+2-(3+4)-3-(3+4+5+3)-4 이렇게 계산한 것의 결과를 구해야 합니다.
그래서
1. 첫번째 -가 나오기 전까지 숫자들을 모두 더하고
2. 이후엔 -로 구분하여 사이의 숫자들을 모두 더하였습니다.
- 추가적으로 문자열을 숫자로 바꿔주는 작업이 필요했습니다.
푸는 과정에서 "java.util.regex.PatternSyntaxException: Dangling meta character" 에러가 있었는데
'+', '[', ']', '(', ')' 의 문자열에서는 앞에 \\을 붙여야 한다는 걸 알게되었습니다. (참고)
적절한 변수명이 생각나지 않아 떠오르는대로 써서 가독성이 떨어지는 것 같습니다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class Main { | |
public static void main(String args[]) { | |
Scanner sc = new Scanner(System.in); | |
String exp = sc.next(); | |
sc.close(); | |
String []str = exp.split("-"); // '-' 기호 기준으로 배열에 담기 | |
// 처음 '-'전까지 모두 더하기 | |
String []tmp = str[0].split("\\+"); | |
int first=0; | |
for (String t : tmp) | |
first += Integer.parseInt(t); | |
// 처음 '-' 이후 숫자 더하기 | |
int sum = 0; | |
for(int i=1; i<str.length; i++){ | |
String []temp = str[i].split("\\+"); | |
for (String t : temp) | |
sum += Integer.parseInt(t); | |
} | |
System.out.println(first-sum); | |
} | |
} |

반응형
'Algorithm' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 Level2 - 멀쩡한 사각형 [ Java ] (0) | 2020.01.17 |
---|---|
프로그래머스 코딩테스트 연습 Level2 - 기능개발 [ Java ] (0) | 2020.01.16 |
백준 11399번 ATM [ Java ] (0) | 2020.01.13 |
백준 1931번 회의실배정 [ Java ] (0) | 2020.01.12 |
백준 5086번 배수와 약수 [ Java ] (0) | 2020.01.09 |