코딩테스트 4번 __stack

JoMinJun·2021년 8월 11일
0

코딩테스트

목록 보기
39/39

char - '0'을 이용하면 아스키코드값을 알 필요없이 int형으로 변환 가능
Character.getNumericValue(input.charAt(i)) 방법을 이용해도 형변환이 가능하다.

package main4;


import java.util.Map;
import java.util.Scanner;
import java.util.Stack;
import java.util.HashMap;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;



public class Main4 {
	
	//stack.pop
	//stack.push
	//stack.peek;
	//stakc.size
	//stack.contain
	//stack.claer
	// Character.isDigit -> char 이 숫자 인지 판단
	public int solution(String a ){
		
		
		int basic = 0;
		int st = 0;
		
		Stack<Character> stack = new Stack<>();
	
		for(int i = 0; i < a.length(); i ++) {
			
			
			if(Character.isDigit(a.charAt(i))) {
				stack.push(a.charAt(i));
				
			} else if(!Character.isDigit(a.charAt(i))) {
				basic = a.charAt(i-1)  - '0';
				stack.pop();
				st = i;
				break;
			}
			
			
			
			
		}
		
		
		
		
		
		for(int i = st; i < a.length(); i ++) {
			
				if(Character.isDigit(a.charAt(i))) {
					stack.push(a.charAt(i));
					
				
					
				}else if(a.charAt(i) == '+'){
					
					basic += stack.peek()- '0';
					stack.pop();
				}else if(a.charAt(i) == '*'){
					
					basic *= stack.peek()- '0';
					stack.pop();
				}else if(a.charAt(i) == '-'){
					
					basic -= stack.peek()- '0';
					stack.pop();
				}else if(a.charAt(i) == '/'){
					
					basic /= stack.peek()- '0';
					stack.pop();
				}
		
		
		}
		
	
		return basic ;
	};
	
	
	

	
	
	
	
	
	
	public static void main(String[] args) {
		
		
		Main4 main2 = new Main4();
		

		
		 Scanner kb = new Scanner (System.in);
		 String a=  kb.nextLine();
		
	
		
	
		
	
		System.out.println(	main2.solution(a));
	    
		
	}
	

}

profile
기술정리

0개의 댓글