1. 정수 제곱근 판별
#include <string>
#include <vector>
#include <cmath>
using namespace std;
long long solution(long long n) {
long long answer = 0;
long long s=sqrt(n);
if(s*s==n){// 제곱이면 :: c++에서는 ^ <- 제공xXXXX
answer= pow((s+1),2);
}else{
answer=-1;
}
return answer;
}
2. 자연수 뒤집어 배열로 만들기
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(long long n) {
vector<int> answer;
while(1){
answer.push_back(n%10); //5
n/=10; //1234
if(n==0)
break;
}
return answer;
}
3. 이상한 문자 만들기
=> toupper(), tolower() 사용가능
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string ans = "";
ans =s;
int idx=0;
for(int i=0;i<ans.size();i++){
if(ans[i]==' '){
idx=0;
continue;
}
if(idx%2){ // 짝수 인덱스
if(ans[i]<='Z')
ans[i]+=32;// 소문자로
}else{
if(ans[i]>='a')
ans[i]-=32;//대문자로
}
idx++;
}
return ans;
}
4. 약수의 합
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++){
if(n%i==0)
answer+=i;
}
return answer;
}
5. 시저암호
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
string ans="";
for(int i=0;i<s.size();i++){
if(s[i]==' '){
ans.push_back(s[i]);
continue;
}
else if(s[i]>=97){ //upper z
if(s[i]+n<=122){ //~Z일 경우
s[i]+=n;
}
else{
s[i]=s[i]+n-26; // return to A
}
}else{
if(s[i]+n<=90){ //lower z
s[i]+=n;
}else{
s[i]=s[i]+n-26;
}
}
ans.push_back(s[i]);
}
return ans;
}'코딩 > Programmers 알고리즘' 카테고리의 다른 글
| [C++] 위클리 챌린지 Level1 (0) | 2022.04.11 |
|---|---|
| [C++] Level 1 연습 문제 - 4 (0) | 2022.04.08 |
| [C++] Level 1 연습 문제 - 3 (0) | 2022.04.08 |
| [C++] Level 1 연습 문제 - 1 (0) | 2022.04.07 |
| Level 1 직사각형 별찍기 (0) | 2018.09.07 |