본문 바로가기

프로그래밍/프로그래머스

다항식 더하기 solution code

 

 

 

Solution 1)

def solution(polynomial: String): String = {
  val arr:Array[String] = polynomial.split(" ")
  val num:Int = arr.length
  def x_list(idx:Int=0, lst:List[String]=List()):List[String]={
    if(idx==num) lst
    else{
      if((arr(idx).length>1)&&(arr(idx)(1).toString=="x")) x_list(idx+1,lst:::List(arr(idx)(0).toString))
      else if (arr(idx)=="x") x_list(idx+1, lst:::List("1"))
      else x_list(idx+1,lst)
    }
  }
  def const(idx:Int=0, lst:List[String]=List()):List[String]={
    if(idx==num) lst
    else{
      if((arr(idx).length==1)&&(arr(idx)!="+")&&(arr(idx)!="x")) const(idx+1, lst:::List(arr(idx)))
      else if((arr(idx).length>1)&&(arr(idx)(1).toString!="x")) const(idx+1, lst:::List(arr(idx)))
      else const(idx+1,lst)
    }
  }
  def sum(lst:List[String],idx:Int=0, res:Int=0):Int={
    if(idx==lst.length) res
    else sum(lst,idx+1, res+(lst(idx).toInt))
  }
  if(sum(x_list())==0) sum(const()).toString
  else if (sum(x_list())==1) {
    if(sum(const())==0) "x"
    else "x + "+sum(const()).toString
  }
  else if(sum(const())==0) (sum(x_list()).toString)+"x"
  else (sum(x_list()).toString + "x + "+sum(const()).toString)
}

 

자꾸 틀리는데 이유를 모르겠다...

 

 

 

Solution 2

def solution(polynomial: String): String = {
  val arr:Array[String] = polynomial.split(" ")
  val num:Int = arr.length
  def x_list(idx:Int=0, lst:List[String]=List()):List[String]={
    if(idx==num) lst
    else{
      val len = arr(idx).length
      if(arr(idx)=="x") x_list(idx+1, lst:::List("1"))
      else if (arr(idx)(len-1) =='x') x_list(idx+1,lst:::List(arr(idx)slice(0,len-1)))
      else x_list(idx+1,lst)
    }
  }
  def const(idx:Int=0, lst:List[String]=List()):List[String]={
    if(idx==num) lst
    else{
      val len = arr(idx).length
      if((len==1)&&(arr(idx)!="+")&&(arr(idx)!="x")) const(idx+1, lst:::List(arr(idx)))
      else if((len>1)&&(arr(idx)(len-1)!='x')) const(idx+1, lst:::List(arr(idx)))
      else const(idx+1,lst)
    }
  }
  def sum(lst:List[String],idx:Int=0, res:Int=0):Int={
    if(idx==lst.length) res
    else sum(lst,idx+1, res+(lst(idx).toInt))
  }
  if(sum(x_list())==0) sum(const()).toString
  else if (sum(x_list())==1) {
    if(sum(const())==0) "x"
    else "x + "+sum(const()).toString
  }
  else if(sum(const())==0) (sum(x_list()).toString)+"x"
  else (sum(x_list()).toString + "x + "+sum(const()).toString)
}

 

오케 나름 만족

 

.

.

.

이건 통과했다 =!! 무려 12점이나 얻음