https://school.programmers.co.kr/learn/courses/30/lessons/70129
๋ฌธ์ ์ค๋ช
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์ ๊ฐ์ | ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
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์ ๊ฐ์ | ์ ๊ฑฐ ํ ๊ธธ์ด | ์ด์ง ๋ณํ ๊ฒฐ๊ณผ |
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 i_total_zero = 0;
int i_repeat_count = 0;
while(s.size() != 1)
{
int i_str_size = 0;
++i_repeat_count;
for(int i = 0; i < s.size(); ++i)
{
if(s[i] == '1')
++i_str_size;
else
++i_total_zero;
}
s = "";
while(i_str_size > 0)
{
char c = i_str_size % 2 == 1 ? '1' : '0';
s = c + s;
i_str_size /= 2;
}
}
answer.push_back(i_repeat_count);
answer.push_back(i_total_zero);
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
programmers / level.1 / ํฐ์ผ๋ชฌ(C++) (0) | 2023.02.06 |
---|---|
programmers / level.2 / ์ซ์์ ํํ(C++) (0) | 2023.01.11 |
programmers / level.2 / ์ฌ๋ฐ๋ฅธ ๊ดํธ(C++) (0) | 2023.01.11 |
programmers / level.2 / ์ต์๊ฐ ๋ง๋ค๊ธฐ(C++) (0) | 2023.01.11 |
programmers / level.2 / ์ฐ์ต๋ฌธ์ : JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ(C++) (0) | 2023.01.08 |