File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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 < ; <code >polynomial</code >에 있는 수 < ; 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 < ; <code >polynomial</code >의 길이 < ; 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
Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments