https://school.programmers.co.kr/learn/courses/30/lessons/42883
๋ฌธ์ ์ค๋ช
์ด๋ค ์ซ์์์ k๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ์ป์ ์ ์๋ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ซ์ 1924์์ ์ ๋ ๊ฐ๋ฅผ ์ ๊ฑฐํ๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ 94 ์ ๋๋ค.
๋ฌธ์์ด ํ์์ผ๋ก ์ซ์ number์ ์ ๊ฑฐํ ์์ ๊ฐ์ k๊ฐ solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. number์์ k ๊ฐ์ ์๋ฅผ ์ ๊ฑฐํ์ ๋ ๋ง๋ค ์ ์๋ ์ ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ฌธ์์ด ํํ๋ก return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์กฐ๊ฑด
- number๋ 2์๋ฆฌ ์ด์, 1,000,000์๋ฆฌ ์ดํ์ธ ์ซ์์ ๋๋ค.
- k๋ 1 ์ด์ number์ ์๋ฆฟ์ ๋ฏธ๋ง์ธ ์์ฐ์์ ๋๋ค.
์๋ง์ ์๊ณ ๋ฆฌ์ฆ์ ๋ ์ฌ๋ฆฌ๊ธฐ ํ๋ค์๋ค.
๊ทธ๋ฆฌ๋๋๊น ๊ทธ๋ฅ ์๋ค๋ง ๋น๊ตํ๋ฉด ๋๋ ค๋?!ํ๊ณ ์ฒ์์๋ ์ซ์์ ์/๋ค๋ง ๋น๊ตํด์ ๋ ํฐ์๋ฅผ ๋จ๊ฒจ๋๊ณ ,
์์ ์๋ฅผ eraseํ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ์๋๋ฐ
์ด์ฐ์ ์ฐ ์ฝ๋์คํ ํ ์ผ๋ ๋ค ๋ง์์ง๋ง, ์ฑ์ ์ ๊ฒฐ๊ณผ๋ ์ฒ์ฐธํ๋ค....
๊ทธ๋์ ๋ญ๊ฐ ์ด ๋ฐฉ๋ฒ์ด ์๋๋ฏํด์ ๊ตฌ๊ธ๋งํ์. ๐ค
์ค๋ช ์ ์ฝ๊ณ ๋ ์ดํด๊ฐ ๋ฐ๋ก ์๋์ด์ ์ฌ๋ฌ๋ฒ ์๊ฐํด๋ณด๊ณ ์ ๋ฆฌํด๋ณด์๋ค.
1. number๊ณผ answer์ ์์์๋ถํฐ ์์๊ฐ ๊ทธ๋๋ก ์ด์ด์ง๊ณ , number.size() - k ๊ฐ์ ์ซ์๊ฐ ํ์ํ๋ฏ๋ก
i๋ฒ์งธ๋ก number์ ์ซ์๋ฅผ ๋ฝ์ผ๋ ค๋ฉด ๊ทธ ๋ค์ ์ต์ํ number.size()-k-i ๊ฐ์ ์ซ์๊ฐ ๋ ์์ด์ผ ํ๋ค.
2. number.size() - k - i = number.size() - ( k + i )
3. ๋ฐ๋ผ์ number์ธ๋ฑ์ค ํ์ ์ ๋ฝ์ ์ซ์์ ์ธ๋ฑ์ค ์์ญ์ start ~ k+i ๊น์ง์ด๋ค.
๋์ ํ์ด
#include <string>
#include <vector>
using namespace std;
string solution(string number, int k) {
string answer = "";
int answersize = number.size() - k;
int idx = 0;
for(int i = 0; i < answersize; ++i){
char maxint = number[idx];
int maxidx = idx;
for(int j = idx; j <= k+i; j++){ // k + answersize = number.size()
if(maxint < number[j]){
maxint = number[j];
maxidx = j;
}
}
idx = maxidx + 1;
answer += maxint;
}
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.2 : ์์ ์ฐพ๊ธฐ (์์ ํ์) (0) | 2023.03.03 |
---|---|
[C++/PGS] Lv.2 : ๊ตฌ๋ช ๋ณดํธ (GREEDY) (0) | 2023.03.03 |
[C++/PGS] Lv.2 : ํ๋ฆฐํฐ (Queue) (0) | 2023.03.02 |
[C++/PGS] Lv.3 : ๋จ์ด ๋ณํ (DFS/BFS/๋ฐฑํธ๋ํน) - ์์ ํ์ (0) | 2023.02.24 |
[C++/PGS] Lv.1 : ์ฒด์ก๋ณต (GREEDY) (0) | 2023.02.23 |