C#

[프로그래머스 힌트/답/해석] 다항식 더하기

Guk-blog 2024. 1. 30. 19:53
728x90
반응형

힌트

더보기

- x는 x끼리 합산, 상수는 상수끼리 합산

- x가 1이면 1x가 아닌 x를 리턴

- x가 0이면 상수값만, 상수가 0이면 x값만 리턴

정답

더보기

 

var polyArr = polynomial.Split(" ");

var polyNum = polyArr
    .Where((x,i) => i % 2 == 0 && !int.TryParse(x, out int temp))
    .Select(x => x.Length > 1 ? x.Remove(x.Length-1) : "1")
    .Sum(x => int.Parse(x));

var onlyNum = polyArr
    .Select(x => int.TryParse(x, out int temp) ? int.Parse(x) : 0)
    .Sum();

if(polyNum == 0) return onlyNum.ToString();

if(onlyNum == 0) return polyNum > 1 ? polyNum + "x" : "x";

return string.Concat((polyNum > 1 ? polyNum + "x" : "x")+" + "+onlyNum);

해석

더보기

 

var polyArr = polynomial.Split(" ");

문자열을 " "을 기준으로 나눈다

var polyNum = polyArr
                .Where((x,i) => i % 2 == 0 && !int.TryParse(x, out int temp))
                .Select(x => x.Length > 1 ? x.Remove(x.Length-1) : "1")
                .Sum(x => int.Parse(x));

Where단 -> 홀수 문자들은 연산자(+, =) 이므로 짝수 문자이면서 Int.TryParse가 False(1x이므로 변환이 안됨)인 문자들 저장

Select단 -> 문자열의 길이가 1 이상이면 마지막 문자 "x"를 제거하고 길이가 1이면 문자열 "1"을 저장

Sum단 -> 저장한 문자열을 int화하여 합산

var onlyNum = polyArr
                .Select(x => int.TryParse(x, out int temp) ? int.Parse(x) : 0)
                .Sum();

Select단 -> int화 가능한 수는 int화하고 안되는 자리는 0으로 저장

 

728x90
반응형