sm 기술 블로그

[자바] 문자열에서 사칙연산과 숫자 분리 본문

자료구조 || 알고리즘

[자바] 문자열에서 사칙연산과 숫자 분리

sm_hope 2022. 6. 9. 22:39

문제 제기

String s = "(5 + 5)"

다음과 같이 공백과 괄호,숫자,사칙연산이 섞여있는 문자열이 들어왔다.

1. 공백제거

들어온 문자열이 공백을 지니고 있을 가능성이있다.
때문에 공백은 제거해주고, 순수하게 문자들이 문자열을 이룰 수 있도록 해준다.

s=s.replace(" ","");

2. 연산자를 이용하여 문자와 숫자 분리

String[] operands = s.split("[0-9]");
String[] numSt = s.split("[^0-9]");

연산자 기호는 연산자 를 참고하자.
operands(연산자) 안에는 ['(', '+', ')'] 값이 들어간다.

3. 숫자는 int로 변환해 준다.

for(int i = 1; i < numSt.length;i++) {
			numInt[i-1] = Integer.parseInt(numSt[i]);
}

1번부터 해주는 이유는 0번째 값에 공백이 들어간다.
따라서 정수로 변경해주는 동작을 하는 과정에서 공백을 제거하고 numInt에 집어 넣는다.

최종 결과

public class Main{
	public static void main(String args[]) {
		String s = "(5 + 5)";
		s=s.replace(" ","");

		String[] operands = s.split("[0-9]");
		String[] numSt = s.split("[^0-9]");
		// 연산자와 숫자를 구분해주었음.
		int[] numInt = new int[numSt.length-1]; 
		
		for(int i = 1; i < numSt.length;i++) {
			numInt[i-1] = Integer.parseInt(numSt[i]);
		}
		// 1번째 부터 복사하는 이유는 맨 처음은 공백이 들어간다.
		
		for(int i = 0; i<operands.length;i++) {
			System.out.println(operands[i]);
		}
		for(int i = 0; i<numInt.length;i++) {
			System.out.println(numInt[i]);
		}
	}
}
//출력결과
(
+
)
5
5

'자료구조 || 알고리즘' 카테고리의 다른 글

트리와 전위,중위,후위 순회  (0) 2022.06.11
스택(Stack)과 큐(Queue)  (0) 2022.06.11
브루트 포스(brute force)  (0) 2022.06.08
재귀함수  (0) 2022.06.05
정렬  (0) 2022.05.02
Comments