코딩/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;
}