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점이나 얻음
'프로그래밍 > 프로그래머스' 카테고리의 다른 글
프로그래머스 등수 매기기 (1) | 2022.12.08 |
---|---|
숨어있는 숫자의 덧셈 solution code (0) | 2022.12.01 |
프로그래머스 한 번만 등장한 문자 solution code (0) | 2022.11.30 |
최빈값 return (0) | 2022.11.21 |
11/18 FRI 프로그래머스 분수의 덧셈 (0) | 2022.11.18 |