Skip to content

Commit 5fa83a4

Browse files
committed
[level 0] Title: 다항식 더하기, Time: 7.82 ms, Memory: 64.7 MB -BaekjoonHub
1 parent b7cf7c5 commit 5fa83a4

2 files changed

Lines changed: 144 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# [level 0] 다항식 더하기 - 120863
2+
3+
[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/120863)
4+
5+
### 성능 요약
6+
7+
메모리: 64.7 MB, 시간: 7.82 ms
8+
9+
### 구분
10+
11+
코딩테스트 연습 > 코딩테스트 입문
12+
13+
### 채점결과
14+
15+
정확성: 100.0<br/>합계: 100.0 / 100.0
16+
17+
### 제출 일자
18+
19+
2026년 05월 25일 18:20:54
20+
21+
### 문제 설명
22+
23+
<p>한 개 이상의 항의 합으로 이루어진 식을 다항식이라고 합니다. 다항식을 계산할 때는 동류항끼리 계산해 정리합니다. 덧셈으로 이루어진 다항식 <code>polynomial</code>이 매개변수로 주어질 때, 동류항끼리 더한 결괏값을 문자열로 return 하도록 solution 함수를 완성해보세요. 같은 식이라면 가장 짧은 수식을 return 합니다.</p>
24+
25+
<hr>
26+
27+
<h5>제한사항</h5>
28+
29+
<ul>
30+
<li><p>0 &lt; <code>polynomial</code>에 있는 수 &lt; 100</p></li>
31+
<li><p><code>polynomial</code>에 변수는 'x'만 존재합니다.</p></li>
32+
<li><p><code>polynomial</code>은 양의 정수, 공백, ‘x’, ‘+'로 이루어져 있습니다.</p></li>
33+
<li><p>항과 연산기호 사이에는 항상 공백이 존재합니다.</p></li>
34+
<li><p>공백은 연속되지 않으며 시작이나 끝에는 공백이 없습니다.</p></li>
35+
<li><p>하나의 항에서 변수가 숫자 앞에 오는 경우는 없습니다.</p></li>
36+
<li><p>" + 3xx + + x7 + "와 같은 잘못된 입력은 주어지지 않습니다.</p></li>
37+
<li><p>0으로 시작하는 수는 없습니다.</p></li>
38+
<li><p>문자와 숫자 사이의 곱하기는 생략합니다.</p></li>
39+
<li><p><code>polynomial</code>에는 일차 항과 상수항만 존재합니다.</p></li>
40+
<li><p>계수 1은 생략합니다.</p></li>
41+
<li><p>결괏값에 상수항은 마지막에 둡니다.</p></li>
42+
<li><p>0 &lt; <code>polynomial</code>의 길이 &lt; 50</p></li>
43+
</ul>
44+
45+
<hr>
46+
47+
<h5>입출력 예</h5>
48+
<table class="table">
49+
<thead><tr>
50+
<th>polynomial</th>
51+
<th>result</th>
52+
</tr>
53+
</thead>
54+
<tbody><tr>
55+
<td>"3x + 7 + x"</td>
56+
<td>"4x + 7"</td>
57+
</tr>
58+
<tr>
59+
<td>"x + x + x"</td>
60+
<td>"3x"</td>
61+
</tr>
62+
</tbody>
63+
</table>
64+
<hr>
65+
66+
<h5>입출력 예 설명</h5>
67+
68+
<p>입출력 예 #1</p>
69+
70+
<ul>
71+
<li>"3x + 7 + x"에서 동류항끼리 더하면 "4x + 7"입니다.</li>
72+
</ul>
73+
74+
<p>입출력 예 #2</p>
75+
76+
<ul>
77+
<li>"x + x + x"에서 동류항끼리 더하면 "3x"입니다.</li>
78+
</ul>
79+
80+
81+
> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
class Solution {
2+
public String solution(String polynomial) {
3+
String answer = "";
4+
5+
String[] token = polynomial.split(" ");
6+
7+
int xCnt = 0;
8+
int num = 0 ;
9+
10+
for(String t : token){
11+
int len = t.length();
12+
13+
if(len == 1){
14+
char c = t.charAt(0);
15+
if(c == 'x') xCnt++;
16+
if(c >= '1' && c<='9') num += c -'0';
17+
else continue;
18+
}
19+
else {
20+
char c = t.charAt(len-1);
21+
if(c == 'x'){
22+
String tmp = "";
23+
for(int i=0; i<len-1; i++){
24+
tmp += t.charAt(i);
25+
}
26+
xCnt += Integer.parseInt(tmp);
27+
28+
}
29+
else{
30+
num += Integer.parseInt(t);
31+
}
32+
33+
34+
}
35+
36+
}
37+
38+
if(num == 0 && xCnt > 1){
39+
answer += xCnt;
40+
answer += "x";
41+
}
42+
else if(xCnt == 0 && num != 0){
43+
answer += num;
44+
}
45+
else if(xCnt == 1 && num==0){
46+
answer = "x";
47+
}
48+
else if(xCnt == 1&& num !=0){
49+
answer += "x + ";
50+
answer += num;
51+
}
52+
else{
53+
answer += xCnt;
54+
answer += "x + ";
55+
answer += num;
56+
}
57+
58+
59+
60+
61+
return answer;
62+
}
63+
}

0 commit comments

Comments
 (0)