μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- μκ³ λ¦¬μ¦
- 11650
- λ¨Έμ§μνΈ
- νλ‘μ΄λμμ¬
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- κ·Έλννμ
- λ°μ΄ν°λ² μ΄μ€
- μμνμ
- λ°±μ€
- SQL
- db
- LIS
- μν
- μμꡬνκΈ°
- DFS
- λλΉμ°μ νμ
- λμ κ³νλ²
- Side Menu
- κ·Έλνμνλ¬Έμ
- λ³ν©μ λ ¬
- ꡬν
- κ·Έλν
- μ λ ¬
- BFS
- μ°μ μμν
- μλ£κ΅¬μ‘°
- κΉμ΄μ°μ νμ
- DP
- νλ‘κ·Έλλ¨Έμ€
- 그리λ
πππ°πΈ π£πΆπ΅ π΄π΅π¦π’π₯πΊ
[νλ‘κ·Έλλ¨Έμ€] ν° μ λ§λ€κΈ° - C++ λ³Έλ¬Έ
λ¬Έμ
μ΄λ€ μ«μμμ 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" |
그리λλ₯Ό μ΄μ©νμ¬ ν μ μλ λ¬Έμ .
kκ°λ§νΌ μμ νμμ λ κ°μ₯ ν° μμ¬μΌ νλ―λ‘, μμμλΆν° μ§μλκ°μ λ κ°μ₯ ν° (length - k) μ리μμ μ«μλ₯Ό ꡬνλ€.
λ°λΌμ numberμμ (0 ~ k) λ§νΌμ μ«μ μ€ κ°μ₯ μ΅λκ°μ μ°Ύμ answerμ λνκ³ , μ΅λκ°μ΄ μμΉν μμΉλ₯Ό cursorμ μ μ₯νλ€.
cursor μ΄μ κΉμ§ μ«μλ₯Ό μ κ±°νκ² λλ―λ‘ kμμλ cursorλ§νΌ λΉΌμ£Όκ³ , numberμμλ λ³Έ μ«μλ§νΌ μ§μμ€ ν kκ° 0μ΄ λ λ κΉμ§ λ°λ³΅ν΄μ€λ€.
κ·Έ ν, kκ° 0μ΄ λμμΌλ©΄ λμ΄μ μ§μΈ μ μλ μ«μκ° μμΌλ―λ‘ λ¨μμλ μ«μλ₯Ό λͺ¨λ λν΄μ€λ€.
κ·Έλ¦ΌμΌλ‘ νννλ©΄ μ΄μ λ λ λ―??
κ·Όλ° μ΄λ κ²λ§ νλ©΄ 333222111 μ΄λΌλκ°.. 11111111κ³Ό κ°μ΄ μ«μκ° μμμ§κΈ°λ§ νκ±°λ κ°μ μκ° λ°λ³΅λλ κ²½μ° λ΅μ΄ μλμ¨λ€..
κ·Έλ κΈ° λλ¬Έμ μ’ λ£ μ‘°κ±΄μ κΌ λ¬μμ€μΌνλ€.
그리λλ μΉν΄μ§κΈ° μ΄λ ΅λ€..
μ½λ
#include <string>
#include <vector>
using namespace std;
string solution(string number, int k) {
string answer = "";
int len = number.length();
for(int j = 0; j < len; j++) {
if(answer.length() >= (len - k)) break;
int cursor = 0;
char temp = number[cursor];
for(int i = 0; i <= k; i++) {
if(temp < number[i]) {
temp = number[i];
cursor = i;
}
}
answer += temp;
number.erase(0, cursor + 1);
k -= cursor;
if(k <= 0) {
answer += number;
break;
}
}
return answer;
}