https://school.programmers.co.kr/learn/courses/30/lessons/70129
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ์ค๋ช
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'์ด ์ต์ ํ๋ ์ด์ ํฌํจ๋์ด ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
| s | result |
| "110010101001" | [3,8] |
| "01110" | [3,3] |
| "1111111" | [4,1] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- "110010101001"์ด "1"์ด ๋ ๋๊น์ง ์ด์ง ๋ณํ์ ๊ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ํ์ฐจ | ์ด์ง ๋ณํ ์ด์ | ์ ๊ฑฐํ 0์ ๊ฐ์ | 0 ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
| 1 | "110010101001" | 6 | 6 | "110" |
| 2 | "110" | 1 | 2 | "10" |
| 3 | "10" | 1 | 1 | "1" |
- 3๋ฒ์ ์ด์ง ๋ณํ์ ํ๋ ๋์ 8๊ฐ์ 0์ ์ ๊ฑฐํ์ผ๋ฏ๋ก, [3,8]์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- "01110"์ด "1"์ด ๋ ๋๊น์ง ์ด์ง ๋ณํ์ ๊ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ํ์ฐจ | ์ด์ง ๋ณํ ์ด์ | ์ ๊ฑฐํ 0์ ๊ฐ์ | 0 ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
| 1 | "01110" | 2 | 3 | "11" |
| 2 | "11" | 0 | 2 | "10" |
| 3 | "10" | 1 | 1 | "1" |
- 3๋ฒ์ ์ด์ง ๋ณํ์ ํ๋ ๋์ 3๊ฐ์ 0์ ์ ๊ฑฐํ์ผ๋ฏ๋ก, [3,3]์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- "1111111"์ด "1"์ด ๋ ๋๊น์ง ์ด์ง ๋ณํ์ ๊ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ํ์ฐจ | ์ด์ง ๋ณํ ์ด์ | ์ ๊ฑฐํ 0์ ๊ฐ์ | 0 ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
| 1 | "1111111" | 0 | 7 | "111" |
| 2 | "111" | 0 | 3 | "11" |
| 3 | "11" | 0 | 2 | "10" |
| 4 | "10" | 1 | 1 | "1" |
- 4๋ฒ์ ์ด์ง ๋ณํ์ ํ๋ ๋์ 1๊ฐ์ 0์ ์ ๊ฑฐํ์ผ๋ฏ๋ก, [4,1]์ return ํด์ผ ํฉ๋๋ค.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
int zero = 0, ng = 0;
while(s != "1") {
string arr = "";
int size = 0, num;
ng++;
for(int i = 0; i < s.size(); i++) {
if(s[i] == '0')
zero++;
else
arr += "1";
}
num = arr.size();
s = "";
while(num > 0){
s += to_string(num % 2);
num /= 2;
}
}
answer.push_back(ng);
answer.push_back(zero);
return answer;
}

'๐ ํ๋ก๊ทธ๋๋จธ์ค > ๋ ๋ฒจ 2(C++)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํผ๋ณด๋์น ์ (0) | 2022.11.27 |
|---|---|
| ์ซ์์ ํํ (0) | 2022.11.24 |
| ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2022.11.21 |
| ์ต์๊ฐ ๋ง๋ค๊ธฐ (0) | 2022.11.21 |
| JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (0) | 2022.11.09 |