26. 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
제한사항
- absolutes의 길이는 1 이상 1,000 이하입니다.
- absolutes의 모든 수는 각각 1 이상 1,000 이하입니다.
- signs의 길이는 absolutes의 길이와 같습니다.
- signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다.
입출력 예
absolutes | signs |
[4,7,12] | [true,false,true] |
[1,2,3] | [false,false,true] |
입출력 예 설명
입출력 예 #1
- signs가 [true,false,true] 이므로, 실제 수들의 값은 각각 4, -7, 12입니다.
- 따라서 세 수의 합인 9를 return 해야 합니다.
입출력 예 #2
- signs가 [false,false,true] 이므로, 실제 수들의 값은 각각 -1, -2, 3입니다.
- 따라서 세 수의 합인 0을 return 해야 합니다.
Solution
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> absolutes, vector<bool> signs) {
int answer = 0;
for(int i=0;i<absolutes.size();i++){
if(signs[i]==true){
answer+=absolutes[i];
}
else{
answer-=absolutes[i];
}
}
return answer;
}
추가 설명
absolutes를 차례대로 검사하여 true일 경우에는 sum에 더하고 false인 경우에는 sum에서 뺀다.
27. 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- phone_number는 길이 4 이상, 20이하인 문자열입니다.
입출력 예
phone_number | return |
"01033334444" | "*******4444" |
"027778888" | "*****8888" |
Solution
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* phone_number) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(1);
int phone_len = strlen(phone_number);
for(int i=0 ; i<phone_len ; i++){
if(i<phone_len-4){
answer[i]='*';
}
else answer[i]=phone_number[i];
}
answer[phone_len]='\0';
return answer;
}
추가 설명
phone_number의 길이를 phone_len에 저장해두고 반복문을 돌리면서 answer에 입력한다.
이때 뒷자리 4자리가 아니면 *을 대입하고 나머지 네자리는 그대로 대입한다.
28. 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ numbers의 길이 ≤ 9
- 0 ≤ numbers의 모든 원소 ≤ 9
- numbers의 모든 원소는 서로 다릅니다.
입출력 예
numbers | result |
[1,2,3,4,6,7,8,0] | 14 |
[5,8,4,0,6,7,9] | 6 |
입출력 예 설명
입출력 예 #1
- 5, 9가 numbers에 없으므로, 5 + 9 = 14를 return 해야 합니다.
입출력 예 #2
- 1, 2, 3이 numbers에 없으므로, 1 + 2 + 3 = 6을 return 해야 합니다.
Solution
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// numbers_len은 배열 numbers의 길이입니다.
int solution(int numbers[], size_t numbers_len) {
int answer = -1;
int total_sum=45;
int num_sum=0;
for(int i=0;i<numbers_len;i++){
num_sum+=numbers[i];
}
answer= total_sum-num_sum;
return answer;
}
추가 설명
0부터 9까지 총합에서 주어진 배열의 길이를 빼면 남은 수의 합이 나옴
29. 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
제한사항
- arr은 길이 1 이상인 배열입니다.
- 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
입출력 예
arr | return |
[4,3,2,1] | [4,3,2] |
[10] | [-1] |
Solution
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr) {
if (arr.size() == 1) {
return {-1};
}
int min_value = *min_element(arr.begin(), arr.end());
vector<int> answer;
for (int num : arr) {
if (num != min_value) {
answer.push_back(num);
}
}
return answer;
}
추가 설명
arr의 원소가 1개이면 -1을 리턴하고, 가장 작은 수를 algorithm의 min_element함수를 이용하여 찾아낸다. 이후 arr배열을 돌며 가장 작은 수 일경우 answer에 push한다.
30. 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
제한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s | return |
"abcde" | "c" |
"qwer" | "we |
Solution
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
int length = s.length();
// 문자열 길이가 짝수인 경우: 가운데 두 글자 반환
if (length % 2 == 0) {
answer = s.substr(length / 2 - 1, 2);
}
// 문자열 길이가 홀수인 경우: 가운데 한 글자 반환
else { answer= s.substr(length / 2, 1); }
return answer;
}
추가 설명
문자열의 길이를 2로 나누었을떄 나누어 떨어지면(짝수) 두글자를 반환하고, 홀수일 경우엔 가운데 글자를 반환한다.
'내일배움캠프🔥 > 알고리즘 코드카타💬' 카테고리의 다른 글
[ 내일배움캠프 ] 알고리즘 코드 카타 21~25 💬 (0) | 2025.01.20 |
---|---|
[ 내일배움캠프 ] 알고리즘 코드 카타 16~20 💬 (0) | 2025.01.02 |
[ 내일배움캠프 ] 알고리즘 코드 카타 11~15 💬 (0) | 2024.12.26 |
[ 내일배움캠프 ] 알고리즘 코드 카타 6~10 💬 (0) | 2024.12.15 |
[ 내일배움캠프 ] 알고리즘 코드 카타 1~5 💬 (0) | 2024.12.12 |