[백준] 1514번 - "잃어버린 괄호" (Java)
글 작성자: bbangson
반응형
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
백준에서 측정한 난이도는 실버2입니다. 규칙만 찾는 것이 중요한 문제입니다.
'-'를 기준으로 문자열을 파싱을 하고 그 안의 있는 수들은 모두 더해주기만 하면 됩니다.
첫 번째 배열인 arr[0]은 무조건 양수 혹은 '+'기호가 포함된 수식이 됩니다. 그 이후에 배열의 값들은 cal() 메서드를 통해서 더해주기만 하면 되지만 '-'를 기준으로 파싱해주었기 때문에 arr[0]의 값에서 전부 빼주어야 합니다.
- void main()
입력을 받고 정답을 출력합니다. arr[]은 '-'를 기준으로 파싱해주었고 arr[0]은 따로 cal() 메서드를 먼저 들어가고 그 이후의 인덱스들은 for문을 통해 작동합니다.
- int cal()
더하기 계산만 해주는 메서드입니다. '-'기준으로 파싱해주었기 때문에 빼기 연산은 main문의 for문을 통해서 수행됩니다. 그 외의 모든 연산은 이 메서드에서 수행합니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_1541 {
// BOJ / 1541번 / 잃어버린 괄호 / 수학, 그리디 알고리즘, 문자열, 파싱/ 실버 2
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//식을 입력받는다.
String exp = br.readLine();
String [] arr = exp.split("\\-");
// 첫 -을 만나기 전까지 숫자든 +을 포함하고 있는 식이든 cal 메서드로 보낸다.
// arr[0]은 양수이거나 +를 포함하고 있는 수식이다.
int answer = cal(arr[0]);
for(int i=1; i<arr.length; i++) {
answer -= cal(arr[i]); // arr[0]을 제외한 배열의 값은 - 연산자이기 때문에 빼준다.
}
System.out.println(answer);
}
public static int cal(String exp) { // + 계산
String [] temp = exp.split("\\+");
int result = 0;
for(int i=0; i<temp.length; i++) {
result += Integer.parseInt(temp[i]);
}
return result;
}
}
피드백은 얼마든지 환영합니다.
반응형
'문제 풀이 > Java' 카테고리의 다른 글
[백준] 17425번 - "약수의 합" (Java) (2) | 2021.02.25 |
---|---|
[백준] 15661번 - "링크와 스타트" (Java) (2) | 2021.02.22 |
[백준] 14889번 - "스타트와 링크" (Java) (0) | 2021.02.21 |
[백준] 1759번 - "암호 만들기" (Java) (0) | 2021.02.20 |
[프로그래머스] "최대공약수와 최소공배수" (Java) (0) | 2020.07.17 |
댓글
이 글 공유하기
다른 글
-
[백준] 15661번 - "링크와 스타트" (Java)
[백준] 15661번 - "링크와 스타트" (Java)
2021.02.22 -
[백준] 14889번 - "스타트와 링크" (Java)
[백준] 14889번 - "스타트와 링크" (Java)
2021.02.21 -
[백준] 1759번 - "암호 만들기" (Java)
[백준] 1759번 - "암호 만들기" (Java)
2021.02.20 -
[프로그래머스] "최대공약수와 최소공배수" (Java)
[프로그래머스] "최대공약수와 최소공배수" (Java)
2020.07.17