쉬운 문제다.

최소 index를 지워서 erase 해주면 됨. 빈 배열이라면 -1을 집어넣는다.

#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr) {

    arr.erase(min_element(arr.begin(), arr.end()));

    if (arr.size() == 0)
        arr.push_back(-1);

    return arr;
}

쉬운문제.

root를 씌운것이 정수 인지 아닌지 판별하면 된다.

본인은 sqrt가 내림하여도 같다면 소숫점이 없다는것과 같으므로 그렇게 판별 하였다.

#include <cmath>

using namespace std;

long long solution(long long n) {
    long long answer = -1;

    if (sqrtl(n) == floorl(sqrtl(n)))
        answer = pow(sqrtl(n) + 1, 2);

    return answer;
}

어려울건 없는 문제다.

string 형식으로 풀 수 있겠지만 그냥 숫자로 풀어보았다.

오름차순으로 sort하고 곱해가는 형식으로 구현했다.

내림차순이 아닌 오름차순 sort의 이유는 mul을 1로 주고 index를 쉽게 보기 위해서다.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

long long solution(long long n) {
    long long answer = 0;
    vector<int> arr;

    for (int i = 10; n != 0; n /= 10)
        arr.push_back(n % 10);

    sort(arr.begin(), arr.end());

    long long mul = 1;
    for (int i = 0; i < arr.size(); i++, mul *= 10)
        answer += mul * arr[i];

    return answer;
}

 

딱히 어렵지 않은 문제.

n의 1의 자리를 n을 10으로 나눠가며 push_back 해주면 된다.

앞의 문제와 유사함.

#include <vector>

using namespace std;

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

    for (int i = 10; n != 0; n /= 10)
        answer.push_back(n % 10);

    return answer;
}

흔한 문제다.

반복문을 사용하여 각 자리수를 더하면 된다. while문을 보통 쓰는데 필자는 for문을 선호한다.

using namespace std;

int solution(int n)
{
    int answer = 0;

    for (int i = 10; n != 0; n /= 10)
        answer += n % 10;

    return answer;
}

+ Recent posts