한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 polynomial
이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.
0 < polynomial
에 있는 수 < 100
polynomial
에 변수는 'x'만 존재합니다.
polynomial
은 0부터 9까지의 정수, 공백, ‘x’, ‘+'로 이루어져 있습니다.
항과 연산기호 사이에는 항상 공백이 존재합니다.
공백은 연속되지 않으며 시작이나 끝에는 공백이 없습니다.
하나의 항에서 변수가 숫자 앞에 오는 경우는 없습니다.
" + 3xx + + x7 + "와 같은 잘못된 입력은 주어지지 않습니다.
"012x + 001"처럼 0을 제외하고는 0으로 시작하는 수는 없습니다.
문자와 숫자 사이의 곱하기는 생략합니다.
polynomial
에는 일차 항과 상수항만 존재합니다.
계수 1은 생략합니다.
결괏값에 상수항은 마지막에 둡니다.
0 < polynomial
의 길이 < 50
polynomial | result |
---|---|
"3x + 7 + x" | "4x + 7" |
"x + x + x" | "3x" |
입출력 예 #1
입출력 예 #2
using System;
public class Solution {
public string solution(string polynomial) {
string answer = "";
string temp = "";
string[] str = polynomial.Split(" ");
int xNum = 0;
int num = 0;
for(int i = 0; i < str.Length; i+=2)
{
// Contains()을 활용해 str[i]에 x가 있는지 확인
if(str[i].Contains("x"))
{
// temp에 str[i].Replace를 활용해 x를 string.Empty로 초기화
temp = str[i].Replace("x", string.Empty);
// temp에 값이 없으면 xNum에 1을 더함
if(temp == "")
{
xNum += 1;
}
// temp에 값이 있으면 xNum에 int형으로 변환후 더함
else
{
xNum += int.Parse(temp);
}
}
else
{
num += int.Parse(str[i]);
}
}
if(num == 0)
{
if(xNum == 1)
{
answer = "x";
}
else
{
answer = xNum.ToString() + "x";
}
}
else
{
if(xNum == 0)
{
answer = num.ToString();
}
else if(xNum == 1)
{
answer = "x " + "+ " + num.ToString();
}
else
{
answer = xNum.ToString() + "x " + "+ " + num.ToString();
}
}
return answer;
}
}
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges