์ด๋ค ์ซ์์์ k๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ซ์ 1924์์ ์ ๋ ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ 94 ์ ๋๋ค.
๋ฌธ์์ด ํ์์ผ๋ก ์ซ์ number์ ์ ๊ฑฐํ ์์ ๊ฐ์ k๊ฐ solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. number์์ k ๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ๋ง๋ค ์ ์๋ ์ ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
number๋ 2์๋ฆฌ ์ด์, 1,000,000์๋ฆฌ ์ดํ์ธ ์ซ์์
๋๋ค.
k๋ 1 ์ด์ number์ ์๋ฆฟ์
๋ฏธ๋ง์ธ ์์ฐ์์
๋๋ค.
number | k | return |
---|---|---|
"1924" | 2 | "94" |
"1231234" | 3 | "3234" |
"4177252841" | 4 | "775841" |
๋ฌธ์ ๋ฅผ ์ดํดํ๋ ๋ฐ์๋ ์ด๋ ค์์ด ์์์ง๋ง, ๋ง์ ๊ตฌํ์ ํ๋ ค๋ ์ฝ์ง ์์๋ค.
์ฒ์์๋ ๋ฌธ์ ์์ ์ํ๋ ์กฐ๊ฑด๋๋ก ์ ๊ทผ์ ํ์๋ค.
๋ฌธ์์ด์ ๊ฐ์ฒด๋ก ๋ณํ์์ผ ์์๋ค์ ์ํํ๋ฉด์,
ํน์ ์์๋ฅผ ์ ๊ฑฐํ์์ ๋, ์ต๋๊ฐ์ ์ด๋ฃจ๋ ๋ถ๋ถ์ ์์๋ฅผ ์ ๊ฑฐํด๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ ํด๋ณด์๋ค.
class Solution {
public String solution(String number, int k) {
StringBuilder str = new StringBuilder(number);
int temp = 0;
int max = 0;
for (int i = 0; i < k; i++) {
for (int j = 0; j < str.length(); j++) {
char temp1 = str.charAt(j);
temp = Integer.parseInt(str.deleteCharAt(j).toString());
if (temp > max) {
max = temp;
}
str.insert(j, temp1);
}
str.delete(0, str.length());
str.append(max);
max = 0;
}
return str.toString();
}
}
๊ทธ๋ฌ๋ ๊ฑฐ์ ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค์์ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ์๋ค.
์ด์ค for๋ฌธ์ ๋๋ฉด์ ํ์ํ์ง ์์ ๋ถ๋ถ๊น์ง ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ ๋ค๋ฅธ ๊ท์น์ ์ฐพ์๋ณด์๋ค.
ํฐ ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ ํฐ ์๊ฐ ๋งจ ์์๋ฆฌ์ ์์ผ ํ๋ค.
ํ์ง๋ง, ์
๋ ฅ ๊ฐ์ด ์๋ฅผ ๋ค์ด "4177252841"๊ณผ 4
๋ผ๋ฉด, 8์ด ๋งจ ์์ ์ฌ ์๋ ์๋ค. ์๋ํ๋ฉด, ๋ฌธ์์ด์ ์์๊ฐ ๋ฐ๋์ด์๋ ์๋๊ณ , 8
์๋์๋ 2์๋ฆฌ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ ํน์ฑ์ ํ์ฉํด ๋งจ ์์์ k
๋ฒ์งธ๊น์ง์ ์ซ์ ์ค์์ ์ต์๊ฐ์ ํ๋์ฉ ์ง์๊ฐ๋ฉด ๋๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด, ์์์ ์๋ฆฟ์๋ฅผ ์งํค๋ฉด์ ์์๋ฆฌ๊ฐ ์ ์ผ ์ปค์ง ์ ์๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
class Solution {
public String solution(String number, int k) {
StringBuilder str = new StringBuilder(number);
for (int i = 0; i < k; i++) {
int minIndex = 0;
char min = str.charAt(0);
for (int j = 0; j < k; j++) {
char temp = str.charAt(j);
if (temp < min) {
minIndex = j;
min = temp;
}
}
str.deleteCharAt(minIndex);
}
return str.toString();
}
}
๊ฒฐ๊ณผ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์์ ๋ฐํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์คํจํ์๋ค.
์ด๋ ๋ก์ง์ ์ค๋ฅ๊ฐ ์์๋ค. ํ์ฌ ์ฝ๋์์๋ k
๋ฒ ๋ฐ๋ณตํ๋ฉด์ ๋งค๋ฒ ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ฐพ๊ณ ์ญ์ ํ๊ณ ์๋๋ฐ, ๊ทธ๋ฌ๋ ๋ฌธ์ ์ ์๊ตฌ์ฌํญ์ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๊ฐ์ฅ ์์ ์ซ์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์๋๋ผ, ํ์ฌ ์ซ์์ ๋ค์ ์ซ์๋ฅผ ๋น๊ตํ์ฌ ๋ ํฐ ์ซ์๋ฅผ ๋จ๊ธฐ๋ ๊ฒ์ด๋ค. ์ฆ, ์ญ์ ํ ์ซ์๋ฅผ ์ ํํ ๋, ๋ค์ ์ซ์์ ๋น๊ตํ์ฌ ๋ ํฐ ์ซ์๋ฅผ ๋จ๊ธฐ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค.
๊ทธ๋์ ์ฝ๋๋ฅผ ์น ์๊ณ , ํด๋น ๋ฐฉ์์ผ๋ก ๋ค์ ์ ๊ทผ์ ํด ๋ณด์๋ค.
๋งค๋ฒ ์ต๋๊ฐ์ ๋ง๋ค ์ ์๋ ์ต์ ์ ์ ํ์ ์ด๋ป๊ฒ ํ ์ ์์๊น ๊ณ ๋ฏผํ๋ค๊ฐ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์๊ฐํด๋๋ค.
์
๋ ฅ number
์ ๊ธธ์ด๊ฐ ๋ง์ฝ 10์ด๋ผ๋ฉด,
0๋ฒ ๋ถํฐ 3๋ฒ ์ธ๋ฑ์ค๊น์ง์ ์์ ์ค ์ต๋๊ฐ์ด ์ต์ข
๋ฐํ๊ฐ์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ๊ฐ ๋์ด์ผ ํ๋ค.
์๋ํ๋ฉด, 4๋ฒ ๋ถํฐ 9๋ฒ ์ธ๋ฑ์ค๊น์ง์ ์์๋ค ์ค์์๋ ์ด๋ ํ ๊ฐ๋ ์ฒซ ๋ฒ์งธ ์๋ฆฌ์๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์๋ฅผ ๋ค์ด, number
๊ฐ "4177252841"์ด๋ผ๋ฉด
๋ท์๋ฆฌ "252841"์์๋ ์ด๋ค ๊ฐ์ ๊ณ ๋ฅด๋๋ผ๋ ์๋ฆฟ์์ ์ํด ์ ๋ต์ ์ฒซ ๋ฒ์งธ ๊ฐ์ด ๋ ์ ์์ผ๋ฏ๋ก,
์์๋ฆฌ "4177"์์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ ๋ต์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ ์๊ฐ ๋์ด์ผ ํ๋ค.
๊ทธ๋ฌ๋ฉด ์์ "41"์ ๋ ์๊ฐ๊ฒ ๋๊ณ , 3๋ฒ์งธ ์ธ๋ฑ์ค์ 7์ answer
์ ์ถ๊ฐํจ์ผ๋ก์จ ์ฒซ ๋ฒ์งธ ์ฌ์ดํด์ด ์๋ฃ๋๋ค.
๋ ๋ฒ์งธ ์ฌ์ดํด์์๋ "7252841"์์ ์์ํ๊ฒ ๋๊ณ ,
๋ง์ฐฌ๊ฐ์ง๋ก "725"์ค์์ ์ต๋๊ฐ์ ์ฐพ์ answer
์ ์ด์ด๋ถ์ฌ์ผ ํ๋ค.
์ด์ , ์ด๋ฅผ ์ฝ๋๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด ์ค์ํ๋ฐ,
์ด๋ป๊ฒ ํ๋ฉด ์ธ๋ฑ์ค๋ฅผ ์ ํ์ฉํ ์ ์์ ์ง ๊ณ ๋ฏผ์ด ๋ง์๋ค.
class Solution {
public String solution(String number, int k) {
StringBuilder answer = new StringBuilder();
int startIdx = 0;
int answerLength = number.length() - k;
int count = 0;
for (int i = 0; i < answerLength; i++) {
int max = 0;
for (int j = startIdx; j <= i + k; j++) {
if (number.charAt(j) - '0' > max) {
max = number.charAt(j) - '0';
startIdx = j + 1;
}
}
answer.append(Integer.toString(max));
count++;
}
return answer.toString();
}
}
๊ทธ๋์ ๊ตฌํด์ผ ํ๋ answer
์ ๊ธธ์ด๋งํผ ๋ฐ๋ณต์ ๋๋ฉด์ ํ์์ ์์ํด ๋๊ฐ number
์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ startIdx
๋ก ํ๋ ์ ์ธํด ์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ , startIdx
๋ถํฐ i
+ k
๊น์ง ์ฆ, ์ต๋๊ฐ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฐฐ์ด์ ๋ท๋ถ๋ถ ๋ฐ๋ก ์๊น์ง์ ๋ฒ์ ์ค์์ ์ต๋๊ฐ์ ์ฐพ๊ณ answer
์ ํ๋์ฉ appendํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ์ ํ๋ ๋ง์นจ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.