반응형
728x90
반응형
문제
https://www.acmicpc.net/problem/1541
풀이코드
import java.util.Arrays;
import java.util.Scanner;
/**
* @Date 2022/05/29
* @URL https://www.acmicpc.net/problem/1541
*/
public class A1541_잃어버린_괄호 {
static String param;
public static void main(String[] args) {
// write your code here
A1541_잃어버린_괄호 main = new A1541_잃어버린_괄호();
main.solution();
}
public void solution() {
input();
// 덧셈을 먼저하고 마지막에 뺄셈을 수행하면 될듯하다.
// 55-50+40-60 의 경우
// 55, 50+40
String[] minusArr = param.split("-");
int sum = 0;
boolean isFirst = true;
for (String s : minusArr) {
String[] plusArr = s.split("\\+");
if (isFirst) {
sum = Arrays.stream(plusArr).mapToInt(Integer::parseInt).sum();
isFirst = false;
} else {
sum -= Arrays.stream(plusArr).mapToInt(Integer::parseInt).sum();
}
}
System.out.println(sum);
}
private void input() {
Scanner sc = new Scanner(System.in);
param = sc.next();
}
}
CASE1. 55-50+40의 경우
1) "-"를 기준으로 배열로 생성
String[] minusArr = param.split("-");
55, 50+40
2) minusArr을 순회하여 각 + 기준으로 덧셈을 구한다.
for (String s : minusArr) {
String[] plusArr = s.split("\\+");
if (isFirst) {
sum = Arrays.stream(plusArr).mapToInt(Integer::parseInt).sum();
isFirst = false;
} else {
sum -= Arrays.stream(plusArr).mapToInt(Integer::parseInt).sum();
}
}
처음일 경우에만 sum에 값을 더하고, 그 이후로는 스트림으로 구한 sum() 결과값을 sum 변수에서 빼면 된다.
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[Baekjoon 18406번] 럭키 스트레이트 문제 (with 자바) (0) | 2022.07.05 |
---|---|
[Baekjoon 10816번] 숫자 카드 2 문제 (with 자바) (0) | 2022.05.30 |
[Baekjoon 17298번] 오큰수 문제 (with 자바) (0) | 2022.05.28 |
[프로그래머스] Level3 43162번: 네트워크 (JAVA) (0) | 2022.05.24 |
[프로그래머스] Level1 92334번: 신고 결과 받기 (JAVA) (0) | 2022.05.23 |