[C#] 16일차 - 109. Stack<T>와 Polish 계산기C#/C#200제2021. 2. 14. 10:50
Table of Contents
polish 표기법은 피연산자 뒤에 연산자를 쓰게 된다.
1 + 2 를 1 2 + 로 표시한다.
이렇게 되면 수식에 괄호가 없어도 우선순위를 처리할 수 있게된다.
예를들어 (10 - 20) * 3 이라는 수식을 10 20 - 3 * 로 처리 할 수 있다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace A109_Stack
{
class Program
{
static void Main(string[] args)
{
Console.Write("계산할 수식을 Polish 표기법으로 입력하세요: ");
string[] token = Console.ReadLine().Split();
foreach (var i in token)
Console.Write(" {0}", i);
Console.Write(" = ");
Stack<double> nStack = new Stack<double>();
foreach(var s in token)
{
if (isOperator(s))
{
switch (s)
{
case "+":
nStack.Push(nStack.Pop() + nStack.Pop());
break;
case "-":
nStack.Push(nStack.Pop() - nStack.Pop());
break;
case "*":
nStack.Push(nStack.Pop() * nStack.Pop());
break;
case "/":
nStack.Push(nStack.Pop() / nStack.Pop());
break;
}
} else
{
nStack.Push(double.Parse(s));
}
}
Console.WriteLine(nStack.Pop());
}
private static bool isOperator(string s)
{
if (s == "+" || s == "-" || s == "*" || s == "/")
return true;
else
return false;
}
}
}
반응형
'C# > C#200제' 카테고리의 다른 글
[C#] 16일차 - 111. SortedList와 SortedList<Tkey, Tvalue> (0) | 2021.02.14 |
---|---|
[C#] 16일차 - 110. Hashtable과 Dictionary<Tkey, Tvalue> (0) | 2021.02.14 |
[C#] 16일차 - 108. Queue<T> 컬렉션의 사용 방법 (0) | 2021.02.14 |
[C#] 15일차 - 107. IComparable 인터페이스를 이용한 객체의 정렬 (0) | 2021.02.13 |
[C#] 15일차 - 106. 두 개의 배열을 쌍으로 정렬 (0) | 2021.02.13 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!