https://school.programmers.co.kr/learn/courses/30/lessons/120863
시도 1)
class Solution {
public String solution(String polynomial) {
StringBuilder answer = new StringBuilder();
int x0 = 0; // 상수항
int x1 = 0; // 일차항
polynomial = polynomial.replaceAll("\\s", ""); //공백제거
String str[] = polynomial.split("\\+");
for(int i = 0; i < str.length; i++) {
String s = str[i];
if(s.contains("x")) {
if(s.length() == 1) {
x1 += 1;
} else {
for(int j = 0; j < s.length(); j++) {
//숫자 부분을 추출하여 일차항에 더하기
if(Character.isDigit(s.charAt(j))) {
x1 += (int)(s.charAt(j) - '0');
}
}
}
} else {
x0 += Integer.parseInt(s);
}
}
//상수항과 일차항 모두 존재
if(x0!=0&&x1!=0)
{
answer.append(String.valueOf(x1));
answer.append("x");
answer.append(" + ");
answer.append(String.valueOf(x0));
}
else if(x0==0)
{
answer.append(String.valueOf(x1));
answer.append("x");
}
else if(x1==0)
{
answer.append(String.valueOf(x0));
}
return answer.toString();
}
}
시도 2)
class Solution {
public String solution(String polynomial) {
StringBuilder answer = new StringBuilder();
int x0 = 0; // 상수항
int x1 = 0; // 일차항
polynomial = polynomial.replaceAll("\\s", ""); //공백제거
String str[] = polynomial.split("\\+");
for(int i = 0; i < str.length; i++) {
String s = str[i];
if(s.contains("x")) {
if(s.length() == 1) {
x1 += 1;
}
else
{
String sub[] = s.split("x");
x1 +=Integer.parseInt(sub[0]);
}
} else {
x0 += Integer.parseInt(s);
}
}
//상수항과 일차항 모두 존재
if(x0!=0&&x1!=0)
{
answer.append(String.valueOf(x1));
answer.append("x");
answer.append(" + ");
answer.append(String.valueOf(x0));
}
else if(x0==0)
{
answer.append(String.valueOf(x1));
answer.append("x");
}
else if(x1==0)
{
answer.append(String.valueOf(x0));
}
return answer.toString();
}
}
정답
- 일차항의 계수가 1일때는 생략한다는 점을 고려 못함
class Solution {
public String solution(String polynomial) {
StringBuilder answer = new StringBuilder();
int x0 = 0; // 상수항
int x1 = 0; // 일차항
polynomial = polynomial.replaceAll("\\s", ""); //공백제거
String str[] = polynomial.split("\\+");
for(int i = 0; i < str.length; i++) {
String s = str[i];
if(s.contains("x")) {
if(s.length() == 1) {
x1 += 1;
}
else
{
String sub[] = s.split("x");
x1 +=Integer.parseInt(sub[0]);
}
} else {
x0 += Integer.parseInt(s);
}
}
//상수항과 일차항 모두 존재
if(x0!=0&&x1!=0)
{
if(x1==1)
{
answer.append("x");
answer.append(" + ");
answer.append(String.valueOf(x0));
}
else
{
answer.append(String.valueOf(x1));
answer.append("x");
answer.append(" + ");
answer.append(String.valueOf(x0));
}
}
//일차항만 존재
else if(x0==0&&x1!=0)
{
if(x1==1)
{
answer.append("x");
}
else
{
answer.append(String.valueOf(x1));
answer.append("x");
}
}
//상수항만 존재
else if(x1==0&x0!=0)
{
answer.append(String.valueOf(x0));
}
return answer.toString();
}
}
다른 사람의 풀이
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 안전지대 (0) | 2024.05.10 |
---|---|
[JAVA] 프로그래머스 - 숨어있는 숫자의 덧셈(2) (0) | 2024.05.10 |
[JAVA] 프로그래머스 - 최댓값 만들기(2) (0) | 2024.05.09 |
[JAVA] 프로그래머스 - 캐릭터의 좌표 (0) | 2024.05.09 |
[JAVA] 프로그래머스 - 직사각형 넓이 구하기 (0) | 2024.05.09 |