โค๏ธ Problem
- ๋ฌธ์
ํ ๊ฐ ์ด์์ ํญ์ ํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ์์ ๋คํญ์์ด๋ผ๊ณ ํฉ๋๋ค. ๋คํญ์์ ๊ณ์ฐํ ๋๋ ๋๋ฅํญ๋ผ๋ฆฌ ๊ณ์ฐํด ์ ๋ฆฌํฉ๋๋ค. ๋ง์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๋คํญ์ polynomial์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋๋ฅํญ๋ผ๋ฆฌ ๋ํ ๊ฒฐ๊ด๊ฐ์ ๋ฌธ์์ด๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์. ๊ฐ์ ์์ด๋ผ๋ฉด ๊ฐ์ฅ ์งง์ ์์์ return ํฉ๋๋ค.
- ์ ํ ์ฌํญ
- 0 < polynomial์ ์๋ ์ < 100
- polynomial์ ๋ณ์๋ 'x'๋ง ์กด์ฌํฉ๋๋ค.
- polynomial์ 0๋ถํฐ 9๊น์ง์ ์ ์, ๊ณต๋ฐฑ, ‘x’, ‘+'๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ํญ๊ณผ ์ฐ์ฐ๊ธฐํธ ์ฌ์ด์๋ ํญ์ ๊ณต๋ฐฑ์ด ์กด์ฌํฉ๋๋ค.
- ๊ณต๋ฐฑ์ ์ฐ์๋์ง ์์ผ๋ฉฐ ์์์ด๋ ๋์๋ ๊ณต๋ฐฑ์ด ์์ต๋๋ค.
- ํ๋์ ํญ์์ ๋ณ์๊ฐ ์ซ์ ์์ ์ค๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- " + 3xx + + x7 + "์ ๊ฐ์ ์๋ชป๋ ์ ๋ ฅ์ ์ฃผ์ด์ง์ง ์์ต๋๋ค.
- "012x + 001"์ฒ๋ผ 0์ ์ ์ธํ๊ณ ๋ 0์ผ๋ก ์์ํ๋ ์๋ ์์ต๋๋ค.
- ๋ฌธ์์ ์ซ์ ์ฌ์ด์ ๊ณฑํ๊ธฐ๋ ์๋ตํฉ๋๋ค.
- polynomial์๋ ์ผ์ฐจ ํญ๊ณผ ์์ํญ๋ง ์กด์ฌํฉ๋๋ค.
- ๊ณ์ 1์ ์๋ตํฉ๋๋ค.
- ๊ฒฐ๊ด๊ฐ์ ์์ํญ์ ๋ง์ง๋ง์ ๋ก๋๋ค.
- 0 < polynomial์ ๊ธธ์ด < 50
- ์ ์ถ๋ ฅ ์ & ์ค๋ช
no | polynomial | result |
1 | "3x + 7 + x" | "4x + 7" |
2 | "x + x + x" | "3x" |
- "3x + 7 + x"์์ ๋๋ฅํญ๋ผ๋ฆฌ ๋ํ๋ฉด "4x + 7"์ ๋๋ค.
- "x + x + x"์์ ๋๋ฅํญ๋ผ๋ฆฌ ๋ํ๋ฉด "3x"์ ๋๋ค.
๐ Solution
ํ์ด
class Solution {
public String solution(String polynomial) {
String[] trans = polynomial.split(" \\+ ");
int calcX = 0;
int calcNum = 0;
for(int i=0; i<trans.length; i++) {
trans[i] = trans[i].trim();
if(trans[i].contains("x")) {
if(trans[i].contentEquals("x")) {
trans[i] = trans[i].replace("x", "1");
calcX += Integer.parseInt(trans[i]);
} else {
trans[i] = trans[i].replace("x", "");
calcX += Integer.parseInt(trans[i]);
}
} else {
calcNum += Integer.parseInt(trans[i]);
}
}
StringBuilder sb = new StringBuilder();
if (calcX == 0) {
sb.append(Integer.valueOf(calcNum));
} else if(calcNum == 0) {
if (calcX == 1) {
sb.append("x");
} else {
sb.append(Integer.valueOf(calcX)+"x");
}
} else {
if (calcX == 1) {
sb.append("x + "+Integer.valueOf(calcNum));
} else {
sb.append(Integer.valueOf(calcX)+"x + "+Integer.valueOf(calcNum));
}
}
return sb.toString();
}
}
์ฒ๋ฆฌ์๋๋ ํธ์ฐจ๊ฐ ํฌ๋ค.. ๋ณด์์ด ๋งค์ฐ ํ์โ โ
๐ Comment
ํ ์ด ๋ฌธ์ ๋ ์ง์ง ์ค๋ ๊ฑธ๋ ธ๋ค. ํ ์คํธ 10๋ฒ์ด ๊ณ์ ํต๊ณผ๋์ง ์์์ ๊ณ ์ํ ๋ฌธ์ ..๐คฃ
ํ ์คํธ 10๋ฒ์ด ํต๊ณผ๋์ง ์์์ ๋์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
class Solution {
public String solution(String polynomial) {
String[] trans = polynomial.split(" \\+ ");
int calcX = 0;
int calcNum = 0;
for(int i=0; i<trans.length; i++) {
trans[i] = trans[i].trim();
if(trans[i].contains("x")) {
if(trans[i].contentEquals("x")) {
trans[i] = trans[i].replace("x", "1");
calcX += Integer.parseInt(trans[i]);
} else {
trans[i] = trans[i].replace("x", "");
calcX += Integer.parseInt(trans[i]);
}
} else {
calcNum += Integer.parseInt(trans[i]);
}
}
StringBuilder sb = new StringBuilder();
if (calcNum == 0) {
sb.append(Integer.valueOf(calcX)+"x");
} else if(calcX == 0) {
sb.append(Integer.valueOf(calcNum));
} else if (calcX == 1){
sb.append("x + "+Integer.valueOf(calcNum));
} else {
sb.append(Integer.valueOf(calcX)+"x + "+Integer.valueOf(calcNum));
}
return sb.toString();
}
}
calcX๊ฐ 1์ผ ๋๋ฅผ calcNum์ด 0์ผ๋์ ์๋ ๋์ ๊ฐ๊ฐ ๊ณ ๋ คํ์ง ์์๊ธฐ ๋๋ฌธ์ ํ ์คํธ๋ฅผ ํต๊ณผํ์ง ๋ชปํ ๊ฒ์ ์ ์ ์๋ค. ๋ณ์ x์ ๊ณ์๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ "1x"๊ฐ ์๋ "x"๋ก ์ถ๋ ฅ๋์ด์ผ ํ๋ฏ๋ก ๊ฐ๊ฐ ๊ณ ๋ ค๋ฅผ ํด์ผํ๋ค. (์ ํ ์กฐ๊ฑด : ๊ณ์ 1์ ์๋ตํฉ๋๋ค.)
String[] trans = polynomial.split(" \+ "); ์ด ์ฝ๋์์ ์ค๋ฅ๊ฐ ํ ๋ฒ ๋ฌ์๋ค.
์ฒ์์๋ String[] trans = polynomial.split("+"); ์ผ๋ก ์์ฑํ๋๋ฐ,
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 0 ์ด๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๊ฒ์์ ํด๋ณด๋, .split("") ์์ ํน์๋ฌธ์("+")๋ฅผ ์ง์ด๋ฃ์ผ๋ฉด ๋ฐ์ํ๋ ๋ฌธ์ ์๋ค. ๊ทธ ์ด์ ๋ +, ^, *, "์ ๊ฐ์ ํน์๋ฌธ์๋ ์ ๊ทํํ์์์ ์ฌ์ฉ๋๊ฑฐ๋ ํน์ ๊ธฐ๋ฅ์ ๊ฐ๊ธฐ ๋๋ฌธ์, ํน์๋ฌธ์ ๊ทธ ์์ฒด๋ฅผ ์ง์นญํ๊ธฐ ์ํด์๋ escape ๋ฌธ์์ธ ์ญ์ฌ๋์์ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค.
์ด ๊ฒฝ์ฐ escape ๋ฌธ์์ธ ์ญ์ฌ๋์ ๋๊ฐ(\)๋ฅผ ์ฌ์ฉํด์ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค.
๋๋ "[+]"์ฒ๋ผ ๋๊ดํธ๋ก ๊ฐ์ธ๋ ์ ํด๊ฒฐ์ด ๋๋ค. (๊ฒ์ฆ ์๋ฃ)
์ด๋ป๊ฒ ํ๋ฉด ์ฒ๋ฆฌ ์๋๋ฅผ ํธ์ฐจ ์์ด ๋น ๋ฅด๊ฒ ํ ์ ์์๊น,, ๊ณ ๋ฏผ ์ค๐ค
๐ค Concept
Escape character (์ด์ค์ผ์ดํ ๋ฌธ์)
- Escape sequence ๋ผ๊ณ ๋ ํ๋ค.
- ์ญ์ฌ๋์() ๊ธฐํธ๊ฐ ๋ถ์ด ํน์ํ ๊ธฐ๋ฅ์ ํ๋ ๋ฌธ์ ๋ฆฌํฐ๋ด
- ๋ฌธ์์ด ์์์ ์๋ ๊ทธ๋๋ก ์ถ๋ ฅ๋์ง ์๊ณ , ํน๋ณํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
- ์ญ์ฌ๋์(\)๋ฅผ ์๋ ๊ทธ๋๋ก ์ถ๋ ฅํ๊ณ ์ํ๋ค๋ฉด ์ญ์ฌ๋์ ๋๊ฐ๋ฅผ ์จ์ผํ๋ค
→ ์ญ์ฌ๋์ ํ๋๋ง ์ฌ์ฉํ๋ฉด ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ ๊ฑด์ง ํท๊ฐ๋ฆฌ๊ธฐ ๋๋ฌธ
type | meaning |
' | ํ๋ฐ์ดํ ๋ชจ์ ๊ทธ๋๋ก ์ถ๋ ฅ |
" | ์๋ฐ์ดํ ๋ชจ์ ๊ทธ๋๋ก ์ถ๋ ฅ |
\t | ํญ๋ฌธ์ |
\n | ์ค๋ฐ๊ฟ (๊ฐํ, new line) |
\ (์ญ์ฌ๋์ 2๊ฐ) | ์ญ์ฌ๋์ ๋ชจ์ ๊ทธ๋๋ก ์ถ๋ ฅ |
\b | ํ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ผ๋ก ์ด๋ (๋ฐฑ์คํ์ด์ค) |
\r | ๊ฐ์ ์ค์ ๋งจ ์์ผ๋ก ์ปค์ ์ด๋ (Carriage return, ๋งจ ์ผ์ชฝ์ผ๋ก ์ด๋) |
\f | ํ๋ฆฐํฐ์์ ๊ฐ์ ์ ์ผ๋ก ๋ค์ ํ์ด์ง๋ก ๋์ด๊ฐ ๋ ์ฌ์ฉ (Form feed) |
\0 | null ๋ฌธ์ ์ถ๋ ฅ |
- Java์์๋ ์์ 5๊ฐ ์ ๋๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. ๋๋จธ์ง๋ C์ธ์ด๋ C++์์ ๋ง์ด ์ฌ์ฉํ๋ ๋ฏํ๋ค.
'Programmers lv-0' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ง์ฌ๊ฐํ ๋์ด ๊ตฌํ๊ธฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (1) | 2022.11.28 |
---|---|
์บ๋ฆญํฐ์ ์ขํ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (1) | 2022.11.28 |
์จ์ด์๋ ์ซ์์ ๋ง์ (2) - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
์ต๋๊ฐ ๋ง๋ค๊ธฐ (2) - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
๋ฌธ์์ด ๊ณ์ฐํ๊ธฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
ํ ๋ฒ๋ง ๋ฑ์ฅํ ๋ฌธ์ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
๋๊ธ