목록전체 글 (601)
sm 기술 블로그
스택(Stack) - LIFO후입 선출(Last In First Out) 데이터를 차곡차곡 쌓아 올린 형태의 자료구조로 데이터가 순서대로 쌓인다. 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조(후입 선출) 삽입(push) | 삭제(pop) 큐(Queue) - FIFO선입 선출(First In First Out) 먼저 들어온 것이 먼저 나가는 선입 선출 구조 삽입(Enqueue) | 삭제(Dequeue)
문자열 계산기 (문제) 계산식을 문자열로 받는다. (괄호 포함) 만약 괄호가 있다면 그것을 먼저 처리해야한다. => 우선처리 부여 공백을 허용한다.(공백을 넣지 않아도 되지만 입력할 때 두개이상의 공백은 허용하지 않음) 1. 문자열 정리 및 배열에 저장 경우의 수 숫자와 연산자 사이에 공백을 포함한다. ex) ( 50 + 50 ) 숫자와 연산자 사이에 공백을 포함하지 않는다. ex) (50+50) 숫자와 연산자 사이에 공백을 포함하거나 포함하지 않는다. ex) (50+ 50 ) replace 함수를 통해 각 토큰별로 하나의 공백을 받도록 한다. 받은 문자열은 s라고 칭한다. s = s.replace("(", " ( "); s = s.replace(")", " ) "); s = s.replace("+", ..
문제 제기 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] ..
1. 정규식 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴이다. 만약 0부터 9까지의 숫자를 구분자로 구분하여 사용한다면 0|1|2|3|4|5|6|7|8|9 와 같이 써야한다. 하지만 정규식은 [0-9]와 같이 간단히 사용할 수 있다. 숫자 => [0-9] 알파벳 대문자 => [A-Z] 알파벳 소문자 => [a-z] 2. 정규식 표현 문법 3. 적용하기 split을 이용하면 숫자만 표현할 수도 혹은 사칙연산과 기호만 표현할 수 있다. 사칙연산과 부호만 추출하여 배열에 저장 public class Main{ public static void main(String args[]) { String s = "(5 + 5)"; String regExp = "[0-9]"; String[] operands = ..