Coding Test Study - 9주차

Checking·2021년 6월 18일
0

Coding Test Study

목록 보기
9/22

완전탐색

소수 찾기

1차 시도

#include <string>
#include <vector>
#include <cmath>
#include <unordered_set>
#include <algorithm>

using namespace std;

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

int solution(string numbers) {
    int answer = 0;
    unordered_set <int> list;
    
    do {
        for (int i=1; i<=numbers.size(); i++) {
            int now_number = stoi(numbers.substr(0,i));
            
            if (list.find(now_number) == list.end()) {
                list.insert(now_number);
            }
        }
    } while (next_permutation(numbers.begin(), numbers.end()));

    for (auto n : list) {
        if (isPrime(n)) answer++;
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	실패 (0.02ms, 3.94MB)
  테스트 2 〉	실패 (0.49ms, 3.93MB)
  테스트 3 〉	실패 (0.01ms, 3.96MB)
  테스트 4 〉	실패 (0.03ms, 3.94MB)
  테스트 5 〉	통과 (0.01ms, 3.94MB)
  테스트 6 〉	통과 (0.01ms, 3.92MB)
  테스트 7 〉	실패 (0.02ms, 3.94MB)
  테스트 8 〉	통과 (0.01ms, 3.96MB)
  테스트 9 〉	실패 (0.01ms, 3.97MB)
  테스트 10 〉	실패 (0.66ms, 3.93MB)
  테스트 11 〉	실패 (0.01ms, 3.93MB)
  테스트 12 〉	실패 (0.02ms, 3.94MB)

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

2차 시도

#include <string>
#include <vector>
#include <cmath>
#include <unordered_set>
#include <algorithm>

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(string numbers) {
    int answer = 0;
    unordered_set <int> list;
    
    do {
        for (int i=1; i<=numbers.size(); i++) {
            int now_number = stoi(numbers.substr(0,i));
            
            if (list.find(now_number) == list.end()) {
                list.insert(now_number);
            }
        }
    } while (next_permutation(numbers.begin(), numbers.end()));

    for (auto n : list) {
        if (isPrime(n)) answer++;
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.03ms, 3.98MB)
  테스트 2 〉	통과 (0.56ms, 3.94MB)
  테스트 3 〉	통과 (0.02ms, 3.96MB)
  테스트 4 〉	통과 (0.02ms, 3.95MB)
  테스트 5 〉	통과 (0.01ms, 3.94MB)
  테스트 6 〉	통과 (0.01ms, 3.82MB)
  테스트 7 〉	실패 (0.02ms, 3.96MB)
  테스트 8 〉	통과 (0.01ms, 3.96MB)
  테스트 9 〉	통과 (0.01ms, 3.94MB)
  테스트 10 〉	실패 (0.69ms, 3.92MB)
  테스트 11 〉	실패 (0.01ms, 3.78MB)
  테스트 12 〉	실패 (0.01ms, 3.95MB)

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

3차 시도

#include <string>
#include <vector>
#include <cmath>
#include <unordered_set>
#include <algorithm>

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(string numbers) {
    int answer = 0;
    unordered_set <int> list;
    
    sort(numbers.begin(), numbers.end());
    
    do {
        for (int i=1; i<=numbers.size(); i++) {
            int now_number = stoi(numbers.substr(0,i));
            
            if (list.find(now_number) == list.end()) {
                list.insert(now_number);
            }
        }
    } while (next_permutation(numbers.begin(), numbers.end()));

    for (auto n : list) {
        if (isPrime(n)) answer++;
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.02ms, 3.95MB)
  테스트 2 〉	통과 (0.49ms, 3.95MB)
  테스트 3 〉	통과 (0.01ms, 3.96MB)
  테스트 4 〉	통과 (0.03ms, 3.96MB)
  테스트 5 〉	통과 (0.01ms, 3.95MB)
  테스트 6 〉	통과 (0.02ms, 3.95MB)
  테스트 7 〉	통과 (0.02ms, 3.96MB)
  테스트 8 〉	통과 (0.01ms, 3.95MB)
  테스트 9 〉	통과 (0.02ms, 3.96MB)
  테스트 10 〉	통과 (0.64ms, 3.96MB)
  테스트 11 〉	통과 (0.10ms, 3.95MB)
  테스트 12 〉	통과 (0.04ms, 3.98MB)

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

카펫

1차 시도

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer = {0, 0};
    
    for (int i=1; ;i++) {
        int j = yellow / i;

        if (i * 2 + j * 2 + 4 == brown) {
            if (i < j) {
                return {j + 2, i + 2};
            } else {
                return {i + 2, j + 2};
            }
        }
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.76MB)
  테스트 2 〉	실패 (0.01ms, 3.94MB)
  테스트 3 〉	실패 (0.01ms, 3.7MB)
  테스트 4 〉	통과 (0.02ms, 3.76MB)
  테스트 5 〉	통과 (0.01ms, 3.93MB)
  테스트 6 〉	통과 (0.01ms, 3.94MB)
  테스트 7 〉	통과 (0.01ms, 3.94MB)
  테스트 8 〉	실패 (0.01ms, 3.96MB)
  테스트 9 〉	실패 (0.01ms, 3.96MB)
  테스트 10 〉	실패 (0.01ms, 3.95MB)
  테스트 11 〉	통과 (0.01ms, 3.93MB)
  테스트 12 〉	통과 (0.01ms, 3.96MB)
  테스트 13 〉	통과 (0.01ms, 3.93MB)

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

2차 시도

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer = {0, 0};
    
    for (int i=1; ;i++) {
        if (yellow % i != 0) continue;
        
        int j = (int) yellow / i;

        if (i * 2 + j * 2 + 4 == brown) {
            if (i < j) {
                return {j + 2, i + 2};
            } else {
                return {i + 2, j + 2};
            }
        }
    }
    
    return answer;
}
정확성  테스트
  테스트 1 〉	통과 (0.01ms, 3.91MB)
  테스트 2 〉	통과 (0.01ms, 3.95MB)
  테스트 3 〉	통과 (0.01ms, 3.96MB)
  테스트 4 〉	통과 (0.01ms, 3.97MB)
  테스트 5 〉	통과 (0.01ms, 3.91MB)
  테스트 6 〉	통과 (0.01ms, 3.95MB)
  테스트 7 〉	통과 (0.01ms, 3.96MB)
  테스트 8 〉	통과 (0.01ms, 3.97MB)
  테스트 9 〉	통과 (0.01ms, 3.92MB)
  테스트 10 〉	통과 (0.01ms, 3.98MB)
  테스트 11 〉	통과 (0.01ms, 3.95MB)
  테스트 12 〉	통과 (0.01ms, 3.96MB)
  테스트 13 〉	통과 (0.01ms, 3.96MB)

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

0개의 댓글