문제 설명
내적
해결 방법
두 1차원 정수 배열 a, b 각각의 동일한 인덱스의 요소의 곱을 구하고, 곱한 값을 전부 더해주면 된다
💻소스코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> a, vector<int> b) {
int answer = 0;
for(int i = 0; i < a.size(); i++)
answer += a[i] * b[i];
return answer;
}
문제 설명
없는 숫자 더하기
해결 방법
numbers 배열에 없는 0부터 9까지의 수를 더하면 된다. 제한 사항이 있기 때문에 없는 숫자를 찾아서 더하는 것보다 전체에서 있는 숫자를 빼는 것이 편하다고 생각했다. 0부터 9까지의 합인 45에서 numbers 배열에 있는 모든 요소를 뺐다.
💻소스코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> numbers) {
int answer = 45;
for (int i = 0; i < numbers.size(); i++){
answer -= numbers[i];
}
return answer;
}
문제 설명
나머지가 1이 되는 수 찾기
해결 방법
2부터 시작해서 n-1까지 나눴을 때 나머지가 1이 되는 가장 작은 수를
answer에 할당하고 해당 반복문을 break하면 최솟값만 반환된다.
💻소스코드
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for(int i = 2; i < n; i++){
if (n % i == 1){
answer = i;
break;
}
}
return answer;
}
문제 설명
음양 더하기
해결 방법
signs[i]
가 true이면absolute[i]
가 양수라는 의미이므로 answer 변수에 더해주고, 아니라면 음수라는 의미이므로 answer에서 빼준다.
💻소스코드
#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])
answer += absolutes[i];
else
answer -= absolutes[i];
}
return answer;
}
문제 설명
약수의 개수와 덧셈
해결 방법
두 수left
와right
를 포함한 사이의 모든 수를 확인해야 한다
각각의 수에 대해서 약수의 개수를 판단해야 하기 때문에 while문 안에
약수의 개수를 담을cnt
와 약수인지 판별할i
를 선언
약수의 개수가 짝수인 수는 더해주고, 홀수인 수는 뺀다
💻소스코드
#include <string>
#include <vector>
using namespace std;
int solution(int left, int right) {
int answer = 0;
while (left <= right){
int cnt = 0; // number of factors
int i = 1;
while (i <= left){
if (left % i == 0)
cnt++;
i++;
}
if (cnt % 2 == 0) // 약수의 개수가 짝수인 수는 더하고, 홀수인 수는 뺀다
answer += left;
else
answer -= left;
left++;
}
return answer;
}
문제 설명
두 개 뽑아서 더하기
해결 방법
배열 내의 서로 다른 인덱스에 있는 모든 요소를 더하기 위해 이중 for문을 작성했다.
반환되는 배열에서 중복되는 수가 없기 때문에 find 함수를 써서 벡터 내에 요소가 존재하지 않는다면(겹치는 수가 없다면) push_back() 한다.
오름차순 정렬이 필요하므로 algorithm의 sort 함수를 사용해서 정렬을 해주었다.
💻소스코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
for (int i = 0; i < numbers.size(); i++){
for (int j = i + 1; j < numbers.size(); j++){
if (find(answer.begin(), answer.end(), numbers[i] + numbers[j]) == answer.end())
answer.push_back(numbers[i] + numbers[j]);
}
}
sort(answer.begin(), answer.end());
return answer;
}