https://programmers.co.kr/learn/courses/30/lessons/42883
์ฝ๋
class Solution {
public static String solution(String number, int k) {
StringBuilder sb = new StringBuilder(number);
int delCount = 0;
int index = 1;
int i = 0;
while(delCount != k) {
// 4 1 7 7 ... <- 1 7 ๋น๊ตํด์ ๋ค์ ์ซ์๊ฐ ๋ ํฌ๋ฉด ์ ์ซ์ ์ ๊ฑฐ
// ์ ๊ฑฐํ์ผ๋ ์ index(4, 7)๋ฅผ ๋น๊ตํ๊ธฐ ์ํด index --,
// ์ ๊ฑฐํ delCount ++;
if(index >= 1 && sb.charAt(index-1) < sb.charAt(index)) {
sb.deleteCharAt(index-1);
index --;
delCount ++;
}
else {
// index๊ฐ ๊ฐ์ฅ ๋๊ฐ์ผ๋
if(index == sb.length() - 1 && sb.charAt(index) <= sb.charAt(index-1)) {
sb.deleteCharAt(index);
delCount ++;
index --;
}
else {
index ++;
}
}
}
return sb.toString();
}
}
ํ์ด
๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์๊ฐํ๋ค๊ฐ ๋ง๋ ํ ๋ ์ค๋ฅด๋ ๋ฐฉ๋ฒ์ด ์์ด์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค ..
์๊ฐ๋ณด๋ค ๊ฝค๋ ๋ณต์กํ๊ณ , ๋ค๋ฅธ ํ์ด๋ค์ ๋ณด๋ฉด ์คํ์ ์ด์ฉํด ํผ ํ์ด๊ฐ ๋ง์๋ค.
์ผ๋จ ์ํ์ด๋,, ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ณ์ number์ ์ญ์ ํ๊ธฐ ์ฉ์ดํ StringBuilder๋ก ๋ณํํด์ ํผ๋ค.
๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ง๋ค์ด์ผ ํ๋ฏ๋ก ๊ฐ์ฅ ์์์๋ ์ซ์๋ ๊ฐ์ฅ ํฐ ์ซ์๊ฐ ๋์์ผ ํ๊ณ , ๋น๊ตํ๋ฉด์์ญ์ ํ๋ ์์ผ๋ก ํผ๋ค. ์ญ์ ํ ๊ฐฏ์์ k๊ฐ ๊ฐ์๋ while๋ฌธ์ ์ข ๋ฃํ๋ค.
number = "41772528 " ์ ๊ฐ์๋
index = 1์ผ๋... index-1(4) ์ index(1)์ ๋น๊ตํ๋ค. => 4๊ฐ ๋ํฌ๋ฏ๋ก index๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค.
index = 2์ผ๋... index-1(1) ์ index(7)์ ๋น๊ตํ๋ค. => 7์ด ๋ ํฌ๋ฏ๋ก index-1(1)์ ์ญ์ ํ๊ณ , delCount๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค. ๊ทธ ์ ์ ๋น๊ตํ 4์ ๋น๊ตํ๊ธฐ์ํด index๋ฅผ ๊ฐ์์ํจ๋ค.
index = 1์ผ๋... index-1(4)์ index(7)์ ๋น๊ตํ๋ค. => 7์ด ๋ ํฌ๋ฏ๋ก index-1(4)์ ์ญ์ ํ๊ณ , delCount๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค. index๋ฅผ ๊ฐ์์ํจ๋ค.
index = 0์ผ๋... index๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค.
์์ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ๋ฐ๋ณต๋๋๋ฐ,, ์ฃผ์ํ ์ ์ ๊ฐ์์ซ์๊ฐ ์ฐ์์ ์ผ๋ก ๋ํ๋ ์ซ์์ด๋ค.
number = "1000000" , k = 3
์์ ๊ฐ์ ์ซ์๋ index๊ฐ ๊ณ์ ์ฆ๊ฐํด๋ ์ซ์๋ฅผ ์ญ์ ํ์ง์๋๋ค.
๋ฐ๋ผ์ index์ ๊ฐ์ด number์ ๊ธธ์ด์ ๊ฐ๊ณ , index-1 ๊ฐ์ด index ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์๋ index๋ฅผ ์ญ์ ํ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋ ๋ฐ๋จน๊ธฐ (2) | 2020.01.22 |
---|---|
[๋ฐฑ์ค] 10815๋ฒ: ์ซ์ ์นด๋ (0) | 2020.01.22 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์ซ์์ ํํ (0) | 2020.01.21 |
[๋ฐฑ์ค] 2164๋ฒ: ์นด๋2(ํ) (0) | 2020.01.21 |
[๋ฐฑ์ค] 13458๋ฒ: ์ํ๊ฐ๋ (0) | 2020.01.21 |
๋๊ธ