Coding Test Study - 9주차 +α

Checking·2021년 6월 20일
0

Coding Test Study

목록 보기
10/22

Level 1

내적

1차

#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;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.93MB)
  테스트 2 〉	통과 (0.01ms, 3.92MB)
  테스트 3 〉	통과 (0.01ms, 3.95MB)
  테스트 4 〉	통과 (0.01ms, 3.93MB)
  테스트 5 〉	통과 (0.01ms, 3.96MB)
  테스트 6 〉	통과 (0.01ms, 3.94MB)
  테스트 7 〉	통과 (0.01ms, 3.95MB)
  테스트 8 〉	통과 (0.01ms, 3.89MB)
  테스트 9 〉	통과 (0.01ms, 3.94MB)

채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

폰켓몬

1차

#include <vector>
#include <list>
using namespace std;

int solution(vector<int> nums)
{
    list <int> pokemon(nums.begin(), nums.end());
    pokemon.sort();
    pokemon.unique();
    
    return (nums.size() / 2 > pokemon.size()) ? pokemon.size() : nums.size() / 2;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.95MB)
  테스트 2 〉	통과 (0.01ms, 3.77MB)
  테스트 3 〉	통과 (0.01ms, 3.95MB)
  테스트 4 〉	통과 (0.01ms, 3.78MB)
  테스트 5 〉	통과 (0.01ms, 3.93MB)
  테스트 6 〉	통과 (0.01ms, 3.72MB)
  테스트 7 〉	통과 (0.02ms, 3.95MB)
  테스트 8 〉	통과 (0.02ms, 3.96MB)
  테스트 9 〉	통과 (0.02ms, 3.91MB)
  테스트 10 〉	통과 (0.02ms, 3.84MB)
  테스트 11 〉	통과 (0.02ms, 3.93MB)
  테스트 12 〉	통과 (0.13ms, 3.94MB)
  테스트 13 〉	통과 (0.14ms, 3.93MB)
  테스트 14 〉	통과 (0.15ms, 3.9MB)
  테스트 15 〉	통과 (0.13ms, 3.97MB)
  테스트 16 〉	통과 (1.61ms, 4.25MB)
  테스트 17 〉	통과 (1.46ms, 4.24MB)
  테스트 18 〉	통과 (1.45ms, 4.25MB)
  테스트 19 〉	통과 (1.44ms, 4.26MB)
  테스트 20 〉	통과 (1.35ms, 4.06MB)

채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

음양 더하기

1차

#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++) {
        answer += (signs[i]) ? absolutes[i] : -absolutes[i];
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.94MB)
  테스트 2 〉	통과 (0.01ms, 3.91MB)
  테스트 3 〉	통과 (0.01ms, 3.95MB)
  테스트 4 〉	통과 (0.01ms, 3.93MB)
  테스트 5 〉	통과 (0.01ms, 3.94MB)
  테스트 6 〉	통과 (0.01ms, 3.95MB)
  테스트 7 〉	통과 (0.01ms, 3.92MB)
  테스트 8 〉	통과 (0.01ms, 3.93MB)
  테스트 9 〉	통과 (0.01ms, 3.94MB)

  채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

로또의 최고 순위와 최저 순위

1차

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> lottos, vector<int> win_nums) {
    vector<int> answer = {7, 7};
    
    for (int i=0; i<lottos.size(); i++) {
        if (lottos[i] == 0) {
            answer[0]--;
            continue;
        }
        
        for (int j=0; j<win_nums.size(); j++) {
            if (lottos[i] == win_nums[j]) {
                answer[0]--;
                answer[1]--;
                break;
            }
        }
    }
    
    if (answer[0] == 7) answer[0] = 6;
    if (answer[1] == 7) answer[1] = 6;
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.94MB)
  테스트 2 〉	통과 (0.01ms, 3.94MB)
  테스트 3 〉	통과 (0.01ms, 3.88MB)
  테스트 4 〉	통과 (0.01ms, 3.93MB)
  테스트 5 〉	통과 (0.01ms, 3.89MB)
  테스트 6 〉	통과 (0.01ms, 3.92MB)
  테스트 7 〉	통과 (0.01ms, 3.94MB)
  테스트 8 〉	통과 (0.01ms, 3.94MB)
  테스트 9 〉	통과 (0.01ms, 3.95MB)
  테스트 10 〉	통과 (0.01ms, 3.94MB)
  테스트 11 〉	통과 (0.01ms, 3.94MB)
  테스트 12 〉	통과 (0.01ms, 3.77MB)
  테스트 13 〉	통과 (0.01ms, 3.93MB)
  테스트 14 〉	통과 (0.01ms, 3.94MB)
  테스트 15 〉	통과 (0.01ms, 3.94MB)

채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

소수 만들기

1차

#include <vector>
#include <iostream>
#include <cmath>

using namespace std;

bool isPrime(int num) {
    if (num < 2) return false;
    
    for (int i=2; i<=sqrt(num); i++) {
        if (num % i == 0) return false;
    }
    
    return true;
}

int solution(vector<int> nums) {
    int answer = 0;
    
    for (int i=0; i<nums.size(); i++) {
        for (int j=i+1; j<nums.size(); j++) {
            for (int k=j+1; k<nums.size(); k++) {
                if(isPrime(nums[i] + nums[j] + nums[k])) answer++;
            }
        }
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.08ms, 3.96MB)
  테스트 2 〉	통과 (0.11ms, 3.83MB)
  테스트 3 〉	통과 (0.03ms, 3.96MB)
  테스트 4 〉	통과 (0.03ms, 3.95MB)
  테스트 5 〉	통과 (0.13ms, 3.96MB)
  테스트 6 〉	통과 (0.21ms, 3.93MB)
  테스트 7 〉	통과 (0.02ms, 3.96MB)
  테스트 8 〉	통과 (0.48ms, 3.96MB)
  테스트 9 〉	통과 (0.04ms, 3.83MB)
  테스트 10 〉	통과 (0.46ms, 3.96MB)
  테스트 11 〉	통과 (0.01ms, 3.94MB)
  테스트 12 〉	통과 (0.01ms, 3.96MB)
  테스트 13 〉	통과 (0.01ms, 3.95MB)
  테스트 14 〉	통과 (0.01ms, 3.96MB)
  테스트 15 〉	통과 (0.01ms, 3.96MB)
  테스트 16 〉	통과 (0.63ms, 3.94MB)
  테스트 17 〉	통과 (0.11ms, 3.94MB)
  테스트 18 〉	통과 (0.01ms, 3.82MB)
  테스트 19 〉	통과 (0.01ms, 3.95MB)
  테스트 20 〉	통과 (0.88ms, 3.95MB)
  테스트 21 〉	통과 (0.80ms, 3.9MB)
  테스트 22 〉	통과 (0.03ms, 3.96MB)
  테스트 23 〉	통과 (0.01ms, 3.93MB)
  테스트 24 〉	통과 (0.65ms, 3.95MB)
  테스트 25 〉	통과 (0.70ms, 3.96MB)
  테스트 26 〉	통과 (0.01ms, 3.93MB)

채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

약수의 개수와 덧셈

1차

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int solution(int left, int right) {
    int answer = 0;
    
    for (int i=left; i<=right; i++) {
        if (sqrt(i) == (int) sqrt(i)) answer -= i;
        else answer += i;
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.94MB)
  테스트 2 〉	통과 (0.01ms, 3.95MB)
  테스트 3 〉	통과 (0.01ms, 3.95MB)
  테스트 4 〉	통과 (0.01ms, 3.95MB)
  테스트 5 〉	통과 (0.01ms, 3.99MB)
  테스트 6 〉	통과 (0.01ms, 3.96MB)
  테스트 7 〉	통과 (0.01ms, 3.93MB)

채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

3진법 뒤집기

1차

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    string three = "";
    
    for (; n>0; n/=3) {
        three = to_string(n%3) + three;
    }

    for (int i=1; !three.empty(); i*=3) {
        answer += (three[0] - '0') * i;
        three.replace(0, 1, "");
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.77MB)
  테스트 2 〉	통과 (0.02ms, 3.94MB)
  테스트 3 〉	통과 (0.02ms, 3.94MB)
  테스트 4 〉	통과 (0.01ms, 3.91MB)
  테스트 5 〉	통과 (0.02ms, 3.96MB)
  테스트 6 〉	통과 (0.02ms, 3.93MB)
  테스트 7 〉	통과 (0.01ms, 3.93MB)
  테스트 8 〉	통과 (0.01ms, 3.89MB)
  테스트 9 〉	통과 (0.02ms, 3.95MB)
  테스트 10 〉	통과 (0.02ms, 3.97MB)

채점 결과
  정확성: 100.0
  합계: 100.0 / 100.0

Level 3

숫자 게임

1차

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int num = 0;

bool cmp (int a, int b) {
    if ((num < a && num < b) || (num >= a && num >= b)) {
        return a > b;
    } else if (num < a) return false;
    else return true;
}

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    
    for (auto now_enemy_number:A) {
        num = now_enemy_number;
        
        sort(B.begin(), B.end(), cmp);
        
        if (B.back() > now_enemy_number) answer++;
        
        B.pop_back();
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.95MB)
  테스트 2 〉	통과 (0.01ms, 3.94MB)
  테스트 3 〉	통과 (0.02ms, 3.77MB)
  테스트 4 〉	통과 (0.01ms, 3.98MB)
  테스트 5 〉	통과 (0.03ms, 3.93MB)
  테스트 6 〉	통과 (0.07ms, 3.93MB)
  테스트 7 〉	통과 (0.08ms, 3.89MB)
  테스트 8 〉	통과 (2.29ms, 3.93MB)
  테스트 9 〉	통과 (9.86ms, 3.79MB)
  테스트 10 〉	통과 (4.40ms, 3.71MB)
  테스트 11 〉	통과 (11.84ms, 3.96MB)
  테스트 12 〉	통과 (2.72ms, 3.97MB)
  테스트 13 〉	통과 (668.34ms, 3.95MB)
  테스트 14 〉	통과 (1656.10ms, 4.11MB)
  테스트 15 〉	통과 (734.57ms, 4.1MB)
  테스트 16 〉	통과 (1434.48ms, 4.17MB)
  테스트 17 〉	통과 (36.99ms, 3.96MB)
  테스트 18 〉	통과 (145.58ms, 3.97MB)

효율성  테스트
  테스트 1 〉	실패 (시간 초과)
  테스트 2 〉	실패 (시간 초과)
  테스트 3 〉	실패 (시간 초과)

채점 결과
  정확성: 85.7
  효율성: 0.0
  합계: 85.7 / 100.0

2차

#include <string>
#include <vector>
#include <algorithm>
#include <list>

using namespace std;

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    list <int> b_number(B.begin(), B.end());
    
    b_number.sort();
    
    for (auto now_enemy_number:A) {
        
        if (b_number.back() > now_enemy_number) {
            answer++;
            
            for(list <int>::iterator iter = b_number.begin(); iter != b_number.end(); iter++) {
                if (*iter > now_enemy_number) {
                    b_number.erase(iter);
                    break;
                }
            }
        } else {
            b_number.pop_front();
        }
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.94MB)
  테스트 2 〉	통과 (0.01ms, 3.97MB)
  테스트 3 〉	통과 (0.01ms, 3.82MB)
  테스트 4 〉	통과 (0.01ms, 3.91MB)
  테스트 5 〉	통과 (0.02ms, 3.71MB)
  테스트 6 〉	통과 (0.02ms, 3.96MB)
  테스트 7 〉	통과 (0.02ms, 3.98MB)
  테스트 8 〉	통과 (0.02ms, 3.97MB)
  테스트 9 〉	통과 (0.32ms, 3.95MB)
  테스트 10 〉	통과 (0.16ms, 3.78MB)
  테스트 11 〉	통과 (0.33ms, 3.96MB)
  테스트 12 〉	통과 (0.12ms, 3.96MB)
  테스트 13 〉	통과 (32.71ms, 4.21MB)
  테스트 14 〉	통과 (79.06ms, 4.22MB)
  테스트 15 〉	통과 (38.02ms, 4.21MB)
  테스트 16 〉	통과 (79.19ms, 4.39MB)
  테스트 17 〉	통과 (0.15ms, 3.95MB)
  테스트 18 〉	통과 (0.37ms, 3.99MB)

효율성  테스트
  테스트 1 〉	실패 (시간 초과)
  테스트 2 〉	실패 (시간 초과)
  테스트 3 〉	실패 (시간 초과)

채점 결과
  정확성: 85.7
  효율성: 0.0
  합계: 85.7 / 100.0

3차

#include <string>
#include <vector>
#include <list>
#include <algorithm>

using namespace std;

int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    list <int> a_number(A.begin(), A.end());
    list <int> b_number(B.begin(), B.end());
    
    a_number.sort(greater<>());
    b_number.sort(greater<>());
    
    for (auto now_enemy_number:a_number) {        
        if (b_number.front() > now_enemy_number) {
            answer++;
            
            b_number.erase(find_if(b_number.begin(), b_number.end(), [now_enemy_number] (int n) ->bool {if (n > now_enemy_number) return true;}));
        } else {
            b_number.pop_back();
        }
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.96MB)
  테스트 2 〉	통과 (0.01ms, 3.71MB)
  테스트 3 〉	통과 (0.01ms, 3.89MB)
  테스트 4 〉	통과 (0.01ms, 3.98MB)
  테스트 5 〉	통과 (0.02ms, 3.97MB)
  테스트 6 〉	통과 (0.03ms, 3.96MB)
  테스트 7 〉	통과 (0.02ms, 3.96MB)
  테스트 8 〉	통과 (0.03ms, 3.79MB)
  테스트 9 〉	통과 (0.21ms, 3.96MB)
  테스트 10 〉	통과 (0.13ms, 3.96MB)
  테스트 11 〉	통과 (0.23ms, 3.94MB)
  테스트 12 〉	통과 (0.11ms, 3.91MB)
  테스트 13 〉	통과 (1.50ms, 4.3MB)
  테스트 14 〉	통과 (2.50ms, 4.31MB)
  테스트 15 〉	통과 (1.65ms, 4.06MB)
  테스트 16 〉	통과 (2.10ms, 4.33MB)
  테스트 17 〉	통과 (0.33ms, 3.98MB)
  테스트 18 〉	통과 (0.70ms, 4.18MB)

효율성  테스트
  테스트 1 〉	통과 (37.79ms, 16.3MB)
  테스트 2 〉	통과 (36.08ms, 16MB)
  테스트 3 〉	통과 (38.41ms, 16MB)

채점 결과
  정확성: 85.7
  효율성: 14.3
  합계: 100.0 / 100.0
profile
(ง ᐖ)ว

0개의 댓글