C# 1541번 잃어버린 괄호
2022. 2. 7. 19:31ㆍ코딩테스트 문제 풀이/[백준] 그리디 알고리즘
728x90
반응형
코드 :
using System;
using System.Collections.Generic;
namespace _4
{
class Program
{
static void Main(string[] args)
{
string input = Console.ReadLine();
string[] OnlyPlus = input.Split('-');
int output = 0;
foreach (var item in OnlyPlus[0].Split('+'))
{
output += Convert.ToInt32(item);
}
if(OnlyPlus.Length == 1)
Console.WriteLine(output);
else
{
for (int i = 1; i < OnlyPlus.Length; i++)
{
string[] MinusStr = OnlyPlus[i].Split('+');
foreach (var item in MinusStr)
{
output -= Convert.ToInt32(item);
}
}
Console.WriteLine(output);
}
}
}
}
문제 풀이 :
1. (-)를 기준으로 전체 문자열을 자른다.
(-)가 없을 경우 OnlyPlus[0]에 모든 문자열이 들어갔을 것이고 이를 모두 더하기만 하면 된다.
2. 만약 OnlyPlus의 길이가 2이상이라면 문자열중 (-)가 한번이라도 포함되었다는 의미를 가지므로 OnlyPlus[1]부터 모든 수를 뺀다.
왜냐하면 마이너스 바로 뒤에 괄호를 만들어 무조건 가장 큰 수를 만들어야 최소값이 되기 때문이다. 즉 (-)뒤를 괄호로 묶는 다는 의미는 괄호를 풀어보면 숫자를 (-)로 바꿔준다와 같은 의미이므로 전부 빼주면 된다.
728x90
반응형
'코딩테스트 문제 풀이 > [백준] 그리디 알고리즘' 카테고리의 다른 글
C# 13305번 주유소 (0) | 2022.02.07 |
---|---|
C# 11399번 ATM (0) | 2022.02.07 |
C# 1931번 회의실 배정 (0) | 2022.02.07 |
C# 11047번 동전 0 (0) | 2022.02.07 |