아래 모든 문제들은 프로그래머스에서 제공 되는 문제를 이용하였습니다, 감사합니다.
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
string solution(int n) {
string answer = "";
int share = n;
int remainder = -1;
while (share!=0) {
remainder = share % 3;
share = share / 3;
if (remainder == 0) {
answer = "4" + answer;
share--;
}
else if (remainder == 1) {
answer = "1" + answer;
}
else if (remainder == 2) {
answer = "2" + answer;
}
}
return answer;
}
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(string a, string b)
{
int tmp1, tmp2;
tmp1 = stoi(a + b);
tmp2 = stoi(b + a);
if (tmp1 > tmp2)
return (1);
return (0);
}
string solution(vector<int> numbers) {
string answer = "";
vector<string> tmp;
for(int i = 0; i < numbers.size(); i++)
{
tmp.push_back(to_string(numbers[i]));
}
sort(tmp.begin(), tmp.end(), compare);
for (int i = 0; i < tmp.size(); i++)
{
answer += tmp[i];
}
if(answer[0] == '0')
answer = "0";
return answer;
}
어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.
문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요.