[내일배움캠프 - 본캠프]
16. 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
제한사항
- x는 -10000000 이상, 10000000 이하인 정수입니다.
- n은 1000 이하인 자연수입니다.
입출력 예
x | n | answer |
2 | 5 | [2,4,6,8,10] |
4 | 3 | [4,8,12] |
-4 | 2 | [-4,-8] |
Solution
#include <string>
#include <vector>
using namespace std;
vector<long long> solution(int x, int n) {
vector<long long> answer;
for(int i =x; answer.size()<n;i+=x){
answer.push_back(i);
}
return answer;
}
추가 설명
push_back() 함수를 이용해서 변수에 값을 추가할 수 있는데 이때 추가하는 값인 (i)를 n의 간격을 가진 일정한 수들로 지정하여 리스트를 생성함
17. 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한사항
- n은 10,000,000,000이하인 자연수입니다.
입출력 예
n | return |
12345 | [5,4,3,2,1] |
Solution
#include <string>
#include <vector>
using namespace std;
vector<int> solution(long long n) {
vector<int> answer;
while(n>0){
answer.push_back(n%10);
n/=10;
}
return answer;
}
추가 설명
자연수 n을 10으로 나눠서 나온 나머지 (=맨 마지막 자릿수) 를 배열에 넣은 후 자연수 n을 10으로 나누어서 마지막 자리를 자르고 전 행동을 반복하면 맨 마지막 자릿수부터 한자리씩 배열에 넣을 수 있다.
18. 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.
제한사항
- s의 길이는 1 이상 5이하입니다.
- s의 맨앞에는 부호(+, -)가 올 수 있습니다.
- s는 부호와 숫자로만 이루어져있습니다.
- s는 "0"으로 시작하지 않습니다.
입출력 예
예를 들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다.
str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.
Solution
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
answer=stoi(s);
return answer;
}
추가 설명
stoi() 함수가 string to integer의 약자인 함수로 문자열을 정수로 변환해주는 함수이다.
17. 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한사항
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n | return |
121 | 144 |
3 | -1 |
- 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
- 3은 양의정수의 제곱이 아니므로, -1을 리턴합니다.
Solution
#include <iostream>
#include <vector>
using namespace std;
long long solution(long long n) {
long long x = 1;
while (x * x <= n) {
if (x * x == n) {
return (x + 1) * (x + 1);
}
x++;
}
return -1;
}
추가 설명
long long 변수인 x를 하나 선언하여 x의 제곱이 n과 같아질 때까지 반복문을 진행하여 같아졌을때 (x+1)의 제곱을 리턴한다. x의 제곱이 n 이상이 되었을 때도 제곱값이 n과 같은 수가 없다면 -1을 리턴한다.
20. 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한사항
- n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n | return |
118372 | 873211 |
Solution
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
long long solution(long long n) {
long long answer = 0;
vector<int> v;
while(n>0){
v.push_back(n%10);
n/=10;
}
sort(v.begin() , v.end() , greater<int>());
for(int v : v){
answer=answer*10 + v;
}
return answer;
}
추가 설명
n을 10으로 나눈 나머지 (=맨 마지막 자릿수)를 벡터 함수에 넣고 n을 10으로 나눈다(=마지막 자릿수 잘라냄) 이를 반복하여 각 자릿수를 벡터에 모두 넣은 후 sort 함수를 이용하여 정렬해준다. 이후 앞자리부터 10을 곱하면서 벡터값을 더해주면 처음 주어진 n의 자릿수와 동일하지만 숫자가 정렬된 answer가 만들어진다.
'내일배움캠프🔥 > 알고리즘 코드카타💬' 카테고리의 다른 글
[ 내일배움캠프 ] 알고리즘 코드 카타 26~30 💬 (0) | 2025.01.22 |
---|---|
[ 내일배움캠프 ] 알고리즘 코드 카타 21~25 💬 (0) | 2025.01.20 |
[ 내일배움캠프 ] 알고리즘 코드 카타 11~15 💬 (0) | 2024.12.26 |
[ 내일배움캠프 ] 알고리즘 코드 카타 6~10 💬 (0) | 2024.12.15 |
[ 내일배움캠프 ] 알고리즘 코드 카타 1~5 💬 (0) | 2024.12.12 |