코딩/Programmers 알고리즘
C++ Level1 - 나머지 문제들(?) 4
TaffyMuffin
2022. 5. 24. 16:54
1. [1차] 다트게임(2018 KAKAO BLIND RECRUITMENT)
- 알고리즘 순서
1. 숫자 10 구분
2. S/D/T 구분
3. * # 구분
#include <string>
#include <vector>
#include <cmath>
using namespace std;
int solution(string dart) {
int idx = 0;
int answer = 0;
vector<int> vc;
while (idx < dart.size()) {
if (dart[idx] == '1') {
if (dart[idx + 1] == '0') {
vc.push_back(10);
idx++;
}
else vc.push_back(1);
}
else vc.push_back(dart[idx] - '0');
idx++;
if (dart[idx] == 'S')
vc[vc.size() - 1] = pow(vc[vc.size() - 1], 1);
else if (dart[idx] == 'D')
vc[vc.size() - 1] = pow(vc[vc.size() - 1], 2);
else if (dart[idx] == 'T')
vc[vc.size() - 1] = pow(vc[vc.size() - 1], 3);
idx++;
if (dart[idx] == '*') {
vc[vc.size() - 1] *= 2;
vc[vc.size() - 2] *= 2;
idx++;
}
else if (dart[idx] == '#') {
vc[vc.size() - 1] *= -1;
idx++;
}
}
for (idx = 0; idx < vc.size(); idx++)
answer += vc[idx];
return answer;
}
2. [1차] 비밀지도(2018 KAKAO BLIND RECRUITMENT)
- 알고리즘 순서
1. arr1과 arr2 순서대로 비교
2. 비교하여 이진수 -> #과 공백으로 변경하여 string에 넣기
3. reverse로 거꾸로 순서 바꿈(이진수 비교하고 #/공백으로 변경시 거꾸로 들어감)
ex) 원래 : 10110 -> 들어간것 : 01101
4. 출력
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> ans;
vector<int> arr3(n);
for(int i=0;i<n;i++){
string str="";
arr3[i]= arr1[i] | arr2[i];
while(str.size()!=n){
if(arr3[i]%2==0){
str.push_back(' ');
}else{
str.push_back('#');
}
arr3[i]/=2;
}
reverse(str.begin(),str.end());
ans.push_back(str);
}
return ans;
}