1. 내적 - 월코챌 1
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> a, vector<int> b) {
int sum=0;
for(int i=0;i<a.size();i++){
sum+=a[i]*b[i];
}
return sum;
}
2. 두개 뽑아서 더하기 - 월간 코드 챌린지 1
- 중복제거 : unique
- 삭제 : erase
- first 와 last 사이의 모든 요소를 포함해서 요소들을 제거한다.
- erase 함수를 통해 요소를 지우게 되면 지운 요소 뒤에 있는 요소를 새 위치로 가리키게 된다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> num) {
vector<int> ans;
for(int i=0;i<num.size();i++){
for(int j=i+1;j<num.size();j++){
ans.push_back(num[i]+num[j]);
}
}
sort(ans.begin(),ans.end()); // 오름차순 정렬
ans.erase(unique(ans.begin(), ans.end()),ans.end()); // 중복제거
return ans;
}
3. 3진법 뒤집기 - 월코챌 1
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
vector<int>vc;
int solution(int n) {
int ans = 0,rmd,quo;
while(n>0){
rmd=n%3;
quo=n/3;
n=quo;
vc.push_back(rmd);
}//0021
reverse(vc.begin(),vc.end()); //1200
for(int i=0;i<vc.size();i++){
ans+=(pow(3,i)*vc[i]);
}
return ans;
}
- while부분 밑에처럼 가능 (너무 차근차근 푼 듯 ..ㅎ)
while(n)
{
vc.push_back(n % 3);
n /= 3;
}
4. 약수의 개수와 덧셈 - 월코챌 2
#include <string>
#include <vector>
using namespace std;
int solution(int lft, int rgh) {
int ans = 0;
int i=1;
for(i=lft;i<=rgh;i++){
int cnt=0;
for(int j=1;j<=i;j++){
if(i%j==0){// 약수
cnt++;
}
}
if (cnt % 2 == 1)
ans -= i;
else
ans += i;
}
return ans;
}
5. 음양 더하기 - 월코챌 2
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> abs, vector<bool> signs) {
int sum=0;
for(int i=0;i<signs.size();i++){
if(signs[i]==false)
abs[i]*=(-1);
}
for(int i=0;i<abs.size();i++){
sum+=abs[i];
}
return sum;
}
6. 없는 숫자 더하기 - 월코챌 3
#include <string>
#include <vector>
using namespace std;
vector<int> total;
int solution(vector<int> num) {
int ans = 45; // 0~9 total sum==45
for(int i=0;i<num.size();i++){
ans -= num[i]; /// 전체 합에서 없는 원소 빼주기
}
return ans;
}
7. 나머지가 1이 되는 수 찾기 - 월간 코드 챌린지 3
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int>rm;
int solution(int n) {
int answer = 0;
for(int i=1;i<n;i++){
if(n%i==1){
rm.push_back(i);
}
}
sort(rm.begin(), rm.end());
answer=rm.front();
return answer;
}
'코딩 > Programmers 알고리즘' 카테고리의 다른 글
| C++ Level1 - 나머지 문제들(?) 2 (0) | 2022.05.20 |
|---|---|
| C++ Level1 - 나머지 문제들(?)1 (0) | 2022.05.18 |
| [C++] 위클리 챌린지 Level1 (0) | 2022.04.11 |
| [C++] Level 1 연습 문제 - 4 (0) | 2022.04.08 |
| [C++] Level 1 연습 문제 - 3 (0) | 2022.04.08 |