코딩테스트 연습 - [1차] 다트 게임 | 프로그래머스 스쿨 (programmers.co.kr)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace _230120_1
{
class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
StringBuilder sb = new StringBuilder();
Stack<string> stack = new Stack<string>();
List<string> nums = new List<string>();
for(int i = 0; i <= 10; i++) // 숫자리스트
{
nums.Add(i.ToString());
}
List<string> bonus = new List<string>(); //기호리스트
bonus.Add("S");
bonus.Add("D");
bonus.Add("T");
bonus.Add("*");
bonus.Add("#");
string dart = sr.ReadLine();
for(int i = 0; i < dart.Length; i++) //스택에 입력
{
stack.Push(dart[i].ToString());
}
int option = 0;
int cnt = 0;
int multi = 1;
int minus = 0;
bool isMulti = false;
int ten = 0;
List<int> points = new List<int>(); //3개의 값을 저장할 리스트
foreach(string element in stack)
{
int tmp = 0;
if (nums.Contains(element))
{
if(element == "0") //0과 10을 구분해야 함
{
ten = 9;
}
else if (ten != 0 && element == "1")
{
tmp += ten;
ten = 0;
}
else
{
ten = 0;
}
tmp += int.Parse(element);
}
else if (bonus.Contains(element)) //입력받은 기호에 따라 옵션 저장
{
if(element == "S")
{
option = 1;
}
else if (element == "D")
{
option = 2;
}
else if (element == "T")
{
option = 3;
}
else if (element == "*")
{
multi *= 2;
isMulti = true; //곱하기는 두번 행해진다
}
else
{
minus = -1;
}
}
if(tmp != 0)
{
tmp = (int)(Math.Pow(tmp, option)); //제곱 매서드
if (isMulti == true)
{
tmp *= multi;
cnt++;
if (cnt == 2)
{
isMulti = false;
cnt = 0;
multi = 1;
}
}
if (minus == -1)
{
tmp *= minus;
minus = 0;
}
points.Add(tmp);
}
}
sw.WriteLine(points.Sum());
sr.Close();
sw.Flush();
sw.Close();
}
}
}
예제의 답은 정상적으로 출력하지만 전체적으로 비효율적인 스크립트 같다.
특히 입력방식이 최악....
'Algorithm > 프로그래머스' 카테고리의 다른 글
C#) [프로그래머스] 비밀지도 (6) | 2023.01.29 |
---|---|
C#) [프로그래머스] 전화번호 목록 (0) | 2023.01.21 |
C#) [프로그래머스] 옹알이 (1) (0) | 2023.01.19 |
C#) [프로그래머스] 완주하지 못한 선수 (0) | 2023.01.19 |
C#) [프로그래머스] 최소 직사각형 (0) | 2023.01.18 |