나의 풀이.
- polynomial 문자열을 "+" 기준으로 분리해 배열로 만들기
- "+"는 정규 표현식의 메타 문자이므로, 이 문자를 그대로 인식시키기 위해 이스케이프 문자를 추가
- x의 계수와 일반 숫자항을 담을 변수를 각각 0으로 선언하고
- for each 문으로 polynomial 로 만든 배열을 순회
- "\\+" 기준으로 나누면 앞뒤로 공백이 있을 수 있어 trim() 으로 공백 제거
- foreach 문자열 변수 s가 "x" 를 포함할 때 -> x 를 ""로 교체하면 숫자만 남음
- 빈 값이면 1x이기 때문에 x의 계수 변수에 += 1, 아니면 += 남은 숫자
- x가 포함되지 않은 숫자라면 숫자항 변수에 += 숫자
- StringBuilder를 하나 만들어서 x계수 변수가 1일 때는 그냥 x append
- x계수 변수 값이 != 0이 아니면 1 보다 큰 2부터 숫자가 있으니 xCnt append, x append
- 그리고 cnt가 0 이 아닐 떄
- 앞에 x 항이 있을 때 (sb.length()로 판단) " + " 추가
- 없으면 그냥 숫자만 추가
- 리턴 sb.toString()
class Solution {
public String solution(String polynomial) {
StringBuilder sb = new StringBuilder();
int xCnt = 0;
int cnt = 0;
for (String s : polynomial.split("\\+")) {
s = s.trim();
if (s.contains("x")) {
s = s.replace("x", "");
if (s.equals("")) {
xCnt += 1;
} else {
xCnt += Integer.parseInt(s);
}
} else {
cnt += Integer.parseInt(s);
}
}
if (xCnt == 1) {
sb.append("x");
} else if (xCnt != 0) {
sb.append(xCnt).append("x");
}
if (cnt != 0) {
if (sb.length() != 0) {
sb.append(" + ");
}
sb.append(cnt);
}
return sb.toString();
}
}
'CODING TEST' 카테고리의 다른 글
프로그래머스 - 햄버거 만들기 (0) | 2023.08.10 |
---|---|
프로그래머스 - 대충 만든 자판 (0) | 2023.08.10 |
프로그래머스 - 달리기 경주 (0) | 2023.07.28 |
프로그래머스 고득점 Kit - 스택/큐 프로세스 (0) | 2023.07.22 |
기초수학 - 집합(Set)과 관련 코딩테스트 문제들 (0) | 2023.05.31 |