Game Develop

[Algorithm] Programmers :: 110 옮기기 본문

Algorithm/Programmers

[Algorithm] Programmers :: 110 옮기기

MaxLevel 2023. 8. 18. 18:41

https://school.programmers.co.kr/learn/courses/30/lessons/77886

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
vector<string> solution(vector<string> s) 
{
    vector<string> answer;
 
    for (int i = 0; i < s.size(); ++i)
    {
        string curS = s[i];
 
        if (curS.size() < 3)
        {
            answer.push_back(curS);
            continue;
        }
 
        int count = 0;
 
        for (int j = 0; j < curS.size(); ++j)
        {
            if (curS.size() >= j + 3)
            {
                if (curS.substr(j, 3== "110")
                {
                    curS.replace(j, 3"");
                    ++count;
 
                    j -= 3;
 
                    if (j <= 0) j = -1;
                }
            }
        }
 
        if (count > 0)
        {
            if (curS.size() == 0)
            {
                while (count != 0)
                {
                    curS += "110";
                    --count;
                }
            }
 
            for (int j = curS.size() - 1; j >= 0--j)
            {
                if (j == 0 && curS[j] == '1')
                {
                    while (count != 0)
                    {
                        curS.replace(00"110");
                        --count;
                    }
                    break;
                }
 
                if (curS[j] == '0')
                {
                    while (count != 0)
                    {
                        curS.replace(j+10"110");
                        --count;
                    }
 
                    break;
                }
            }
        }
        
        answer.push_back(curS);
    }
 
    return answer;
}
cs

 

거두절미하고 규칙만 말하자면, 주어진 문자열에서 "110"을 다 빼낸 후, 뒤에서부터 반복문으로 탐색하면서 처음 만나는 '0' 뒤에다가 빼냈던 "110"을 전부 붙이면 된다.