할껀하고놀자

[백준] 1541번 잃어버린 괄호 본문

[IT]/백준

[백준] 1541번 잃어버린 괄호

working_hard 2019. 6. 1. 23:54
728x90
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String [] str = sc.nextLine().split("-");
		String yang = str[0];
		int iyang = 0;
		boolean ok = false;
		if(yang.contains("+")) {
			ok=true;
		}
		if(ok) {
			String [] tmp = yang.split("\\+");
			for (int i = 0; i < tmp.length; i++) {
				iyang+=Integer.parseInt(tmp[i]);
			}
		}else {
			iyang=Integer.parseInt(yang);
		}
		int umm = 0;
		for (int i = 1; i < str.length; i++) {
			if(str[i].contains("+")) {
				String [] tmp = str[i].split("\\+");
				for (int j = 0; j < tmp.length; j++) {
					umm+=Integer.parseInt(tmp[j]);
				}
			}else {
				umm+=Integer.parseInt(str[i]);
			}
		}
		int res = iyang-umm;
		System.out.println(res);
	}
}

포인트 : split 함수를 쓸때 주의점.. .댕글링? 어쩌고 에러가 나올 떄 \\ 를 앞에 두개 붙여줘야 해결된다고 한다. 자바만의 특성이니까 주의하자.

코딩할 때, 구조화 시켜서 잘 생각해봐야 한다. 이렇게 쪼갰을 때, +를 포함하고 있다면?? 아니면?? 이라는 생각 해봐야 한다.

처음 -가 나오기 이전과 이후를 구분하고, 그 후에 처음 나오기 전에 수가 1개인가 아닌가를 나누었다. 1개가 아니라면 그 수들은 다 더해주고, 아니면 그냥하나의 수로 생각하여 처리하였다. 

- 이후의 수에서도 + 가 나올 수 있으므로 + 가 나왔다면 그 숫자또한 분리해서 각각 더해주는 작업을 수행하였다. 

 

약간의 정리와 구조화가 더 필요한 문제이다. 나중에 다시 풀어볼 만한 문제..!

'[IT] > 백준' 카테고리의 다른 글

[백준] 1931번 회의실 배정  (0) 2019.06.02
[백준] 1946번 신입사원  (0) 2019.06.02
[백준] 2217번 로프  (0) 2019.06.01
[백준] 11399번 ATM  (0) 2019.06.01
[백준] 11047번 동전 0  (0) 2019.05.31
Comments