javasciprt - 후위연산자 (postfix) 연산 stack
728x90
문제풀이
해당 문제는 문자열로 한줄을 받아서 for loop 을 돌아 하나씩 문자열을 확인 한다.
해당 문자열이 숫자면 스택에 push 하고 연산자를 만나면 스택에서 두개의 숫자를 pop 한다.
처음 꺼낸 숫자가 변수 lt 두번째 꺼낸숫자를 rt 라고 하겠다. 왼쪽과 오른쪽의 순서도 중요하다 나누기나 빼기에서 값이 달라질 수 있음
그런다음 switch case 문을 통하여 연산해주면된다.
function solution(problem) {
const stack = [];
for (x of problem) {
if (Number.isInteger(+x)) stack.push(+x);
else {
const rt = stack.pop();
const lt = stack.pop();
switch (x) {
case "+":
stack.push(lt + rt);
break;
case "-":
stack.push(lt - rt);
break;
case "*":
stack.push(lt * rt);
break;
case "/":
stack.push(lt / rt);
break;
default:
break;
}
}
}
return stack[0];
}
const problem = "352+*9-";
console.log(solution(problem));
728x90
'Java > java - algorithm' 카테고리의 다른 글
programmer level 2 - 위장 (hash map) (0) | 2022.02.01 |
---|---|
좌표 정렬 구현하기 (Comparable) (0) | 2022.01.19 |
java - 최대 길이 연속부분수열 (투포인트) (0) | 2021.07.30 |
java - 연속된 자연수의 합 (투포인터) (0) | 2021.07.29 |
java - 최대 매출(슬라이딩 윈도우) (0) | 2021.07.29 |
댓글
이 글 공유하기
다른 글
-
programmer level 2 - 위장 (hash map)
programmer level 2 - 위장 (hash map)
2022.02.01 -
좌표 정렬 구현하기 (Comparable)
좌표 정렬 구현하기 (Comparable)
2022.01.19 -
java - 최대 길이 연속부분수열 (투포인트)
java - 최대 길이 연속부분수열 (투포인트)
2021.07.30 -
java - 연속된 자연수의 합 (투포인터)
java - 연속된 자연수의 합 (투포인터)
2021.07.29