압축된 갯수의 len도 고려해야되서 귀찮았음.

queue로 썻으면 더 빨리 풀었을꺼 같다.

#include <string>
#include <vector>

using namespace std;

int CNT_LEN(int n)
{
    if (n == 1000)
        return 4;
    else if (n >= 100)
        return 3;
    else if (n >= 10)
        return 2;
    else if (n >= 2)
        return 1;
    else
        return 0;
}

int STRING_ZIP(int n, string s)
{
    vector<string> split;

    int ind = 0;
    int len = 0;
    
    for (int i = 0; i < s.size(); i += n)
        split.push_back(s.substr(i, n));

    int cnt = 1;
    while (split.size() !=  1)
    {
        if (split[0] == split[1])
            cnt++;
        else
        {
            len += n + CNT_LEN(cnt);
            cnt = 1;
        }
        split.erase(split.begin(), split.begin() + 1);
    }

    return len + CNT_LEN(cnt) + split[0].size();
}

int solution(string s) {
    int answer = s.size();

    for (int i = 1; i < s.size(); i++)
    {
        int temp = STRING_ZIP(i, s);

        if (answer > temp)
            answer = temp;
    }

    return answer;
}

단순 반복 출력 문제다. 별찍기는 자주 봤었다.

#include <iostream>

using namespace std;

int main(void) {

    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int a;
    int b;
    cin >> a >> b;
    
    for (int i = 0; i < b; i++)
    {
        for (int j = 0; j < a; j++)
            cout << '*';
        cout << '\n';
    }

    return 0;
}

어렵진 않다.

곱으로 풀려다가 합으로 구현한 이유는 합이 곱보다 연산 속도가 빠르기 때문이다.

#include <string>
#include <vector>

using namespace std;

vector<long long> solution(int x, int n) {
    vector<long long> answer;

    for (int i = 0, temp = x; i < n; i++, temp += x)
        answer.push_back(temp);

    return answer;
}

평범한 행렬의 덧셈 문제이다.

answer의 크기를 정해놓고 풀껄 그랬다.

#include <string>
#include <vector>

using namespace std;

vector<vector<int>> solution(vector<vector<int>> arr1, vector<vector<int>> arr2) {
    vector<vector<int>> answer;

    for (int i = 0; i < arr1.size(); i++)
    {
        vector<int> temp;
        for (int j = 0; j < arr1[i].size(); j++)
            temp.push_back(arr1[i][j] + arr2[i][j]);
        answer.push_back(temp);
    }

    return answer;
}

반복문으로 풀었음.

#include <string>
#include <vector>

using namespace std;

string solution(string phone_number) {
    int len = phone_number.size();
    string answer = phone_number.substr(len - 4, len);

    for (int i = 0; i < len - 4; i++)
        answer = "*" + answer;

    return answer;
}

+ Recent posts