처음 풀 때 쓴 코드다
테스트 케이스에서 50점밖에 얻지 못했다
좀더 고민해보자
1. 문자열을 공백으로 나누고
2. 각 항이 상수항인지 일차항인지 판단하기
3. 모든 상수항의 값 합, 일차항의 계수 합
4. 문자열 만들기
package Programmers;
import java.util.*;
public class ProgrammingBasic {
public static void main(String[] args) throws Exception {
String polynomial = "3x + 7 + x";
System.out.println(solution(polynomial));
}
public static String solution(String polynomial) {
String[] str = {};
str = polynomial.split(" ");
List<Integer> xNumlist = new ArrayList<>();
List<Integer> numlist = new ArrayList<>();
for(int i = 0; i < str.length; i++){
if(str[i].contains("x")){
String num = Arrays.toString(str[i].split("x"));
if(num.equals("[]")){
xNumlist.add(1);
}else{
xNumlist.add(Integer.parseInt(num.replaceAll("[\\[\\]]", "")));
}
}else if(!str[i].contains("+")){
numlist.add(Integer.parseInt(str[i]));
}
}
int numSum = 0;
for (int i = 0; i < numlist.size(); i++) {
numSum += numlist.get(i);
}
int xNumSum = 0;
for (int i = 0; i < xNumlist.size(); i++) {
xNumSum += xNumlist.get(i);
}
if(numSum == 0){
return xNumSum + "x";
}else{
return xNumSum + "x + " + numSum;
}
}
}
너무 어렵게 풀려했던거 같다..
간단하게 endsWith와 substring으로 잘라서 쓰면 됫었었다..
import java.util.*;
class Solution {
public static String solution(String polynomial) {
String[] str = polynomial.split(" ");
int xNum = 0;
int Num = 0;
for(int i = 0; i < str.length; i++){
if(str[i].equals("x")){
xNum += 1;
}else if(str[i].endsWith("x")){
xNum += Integer.parseInt(str[i].substring(0, str[i].length() -1 ));
}else if(!str[i].equals("+")){
Num += Integer.parseInt(str[i]);
}
}
StringBuilder result = new StringBuilder();
if(xNum == 1){
result.append("x");
}else if(xNum != 0){
result.append(xNum).append("x");
}
if(Num != 0){
if(result.length() > 0){
result.append(" + ");
}
result.append(Num);
}
return result.toString();
}
}