728x90
๋ฌธ์ ์ค๋ช
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ์ด๋ค ๋ฌธ์์ด x์ ๋ํ ์ด์ง ๋ณํ์ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค.
- x์ ๋ชจ๋ 0์ ์ ๊ฑฐํฉ๋๋ค.
- x์ ๊ธธ์ด๋ฅผ c๋ผ๊ณ ํ๋ฉด, x๋ฅผ "c๋ฅผ 2์ง๋ฒ์ผ๋ก ํํํ ๋ฌธ์์ด"๋ก ๋ฐ๊ฟ๋๋ค.
์๋ฅผ ๋ค์ด, x = "0111010"์ด๋ผ๋ฉด, x์ ์ด์ง ๋ณํ์ ๊ฐํ๋ฉด x = "0111010" -> "1111" -> "100" ์ด ๋ฉ๋๋ค.
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. s๊ฐ "1"์ด ๋ ๋๊น์ง ๊ณ์ํด์ s์ ์ด์ง ๋ณํ์ ๊ฐํ์ ๋, ์ด์ง ๋ณํ์ ํ์์ ๋ณํ ๊ณผ์ ์์ ์ ๊ฑฐ๋ ๋ชจ๋ 0์ ๊ฐ์๋ฅผ ๊ฐ๊ฐ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- s์ ๊ธธ์ด๋ 1 ์ด์ 150,000 ์ดํ์ ๋๋ค.
- s์๋ '1'์ด ์ต์ ํ๋ ์ด์ ํฌํจ๋์ด ์์ต๋๋ค.
๋์ ํ์ด
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
int cnt_sum=0;
int cnt=1;
int change = 0;
while(1){
cnt = 0;
for(int i=0; i<s.length(); ++i){
if(s[i]=='0') {
s.replace(i,1,"");
i--;
cnt++;
}
}
if(cnt==0 && s.length()==1) break;
change ++;
cnt_sum += cnt;
int onelen = s.length();
string new_s = "";
while(onelen>0){
if(onelen%2==0) new_s = "0"+new_s;
else new_s = "1"+new_s;
onelen/=2;
}
cout << s << " -> "<<new_s<<"\n";
s = new_s;
}
answer.push_back(change);
answer.push_back(cnt_sum);
return answer;
}
728x90
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.2 : ๋ ๋งต๊ฒ (ํ Heap) (1) | 2023.09.19 |
---|---|
[C++/PGS] Lv.3 : ์ด์ค์ฐ์ ์์ํ (0) | 2023.09.17 |
[MySQL/PGS] Lv.3 : ์ฆ๊ฒจ์ฐพ๊ธฐ๊ฐ ๊ฐ์ฅ ๋ง์ ์๋น ์ ๋ณด ์ถ๋ ฅํ๊ธฐ (0) | 2023.09.16 |
[C++/PGS] Lv.0 : ๋คํญ์ ๋ํ๊ธฐ (๊ตฌํ) (0) | 2023.09.16 |
[C++/PGS] Lv.0 : ์น์์ด (1) (๊ตฌํ) (0) | 2023.05.27 |