๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42883
ํ์ด
๐ก ๋ฌธ์ ์ ๊ทผ
- k๊ฐ์ ์๋ฅผ ์ ๊ฑฐ = ( number.length() - k )๊ฐ์ ์๋ฅผ ๋ฝ๋ ๊ฒ
- ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฝ๋๋ค.
- ์ ์๋ฆฌ๊ฐ ํด ์๋ก ํฌ๋ค.
1. 0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ k๋ฒ์งธ๊น์ง์ ๋ฒ์ ๋ด์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ๋๋ค.
2. ๋ฝ์ ์ (๊ฐ์ฅ ํฐ ์)๋ฅผ answer์ ์ฝ์ ํ๊ณ ๊ทธ ์์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ค.
3. ๋ฝ์ ์์ ์ธ๋ฑ์ค ๋ค์ ์ธ๋ฑ์ค๋ถํฐ ๋ค์ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ๋๋ค. ์ด๋, ํ์ ๋ฒ์๋ฅผ 1 ๋๋ ค์ค๋ค. (k + i ํ์ฉ)
(ex) number = "4177252841" / k = 4 / answer์ ์๋ฆฟ์ = 10 - 4 = 6์๋ฆฌ
- 0 ~ 4๋ฒ์งธ "41772" ์์ ๊ฐ์ฅ ํฐ ์ = 7 / idx = 2/ answer = "7"
- 3 ~ 5๋ฒ์งธ "725" ์์ ๊ฐ์ฅ ํฐ ์ = 7 / idx = 3 / answer = "77"
- 4 ~ 6๋ฒ์งธ "252" ์์ ๊ฐ์ฅ ํฐ ์ = 5 / idx = 5 / answer = "775"
- 6 ~ 7๋ฒ์งธ "28" ์์ ๊ฐ์ฅ ํฐ ์ = 8 / idx = 7 / answer = "7758"
- 8 ~ 8๋ฒ์งธ "4" ์์ ๊ฐ์ฅ ํฐ ์ = 4 / idx = 8 / answer = "77584"
- 9 ~ 9๋ฒ์งธ "1" ์์ ๊ฐ์ฅ ํฐ ์ = 1 / idx = 9 / answer = "775841"
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
string solution(string number, int k) {
string answer = "";
int idx = -1;
// number.length() - k ์ ๋ฝ๊ธฐ
for (int i = 0; i < number.length() - k; i++) {
char max_num = '0';
for (int j = idx + 1; j <= k + i; j++) { // ๊ฐ์ฅ ํฐ ์ ์ฐพ๊ธฐ
if (max_num < number[j]) {
max_num = number[j];
idx = j;
}
}
answer += max_num;
}
return answer;
}
'๐ญ Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 2002๋ฒ: ์ถ์ (0) | 2024.06.14 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ๋คํธ์ํฌ (0) | 2024.06.04 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํ๊ฒ ๋๋ฒ (0) | 2024.05.31 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ์คํฌํธ๋ฆฌ (0) | 2024.05.31 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2024.05.27 |