#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

vector<int> sorting (vector<int> arr){
    int tmp = 0;
    for(int i=0; i < arr.size()-1; i++){
        for(int j = i +1; j < arr.size(); j++){
            if(arr[i] > arr[j]){
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
    return arr;
}
int solution(vector<int> A, vector<int> B) {
    int answer = 0;
    //vector<int> b_arr = sorting( B);
    sort(B.begin(), B.end());
    sort(A.begin(), A.end());
    //vector<int> a_arr = sorting(A);
    int tmp = 0;
    for(int i=0 ; i < A.size(); i++){
        int now = A[i];
        for(; tmp <B.size(); tmp++){
            if (now < B[tmp]){
                
                tmp++;
                answer++;
                break;
            }
        }
    }
    return answer;
}

진짜 바보같이... 난 지금까지 내가 직접 정렬 코드를 함수로 만들어서 문제 풀이를 하였다.

이번에도 항상 그래왔듯이 정렬함수를 만들어서 사용하는데 정확성은 통과하지만 효율성에서 자꾸 시간초과가 나서 고민을 하였다.

 

퀵정렬, 병합정렬 등 시간복잡도가 낮은 정렬방식으로 할까 하다가 생각해보니 벡터 내장함수에 정렬이 있다는 걸 떠올리고 그걸로 풀이하였더니 바로 통과하였다.......진작 이렇게 할걸ㅜㅜ

#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<int> solution(int n, vector<string> words) {
    vector<int> answer;
    int flag = 0;
    int turn = 0;
    int turn_a = 0;
    int turn_b = 0;
    int num =0;
    //중복성 체크
    for(int i=0; i < words.size() -1 ; i++){
        for(int j = i+1; j < words.size(); j++){
            if(words[i] == words[j]){
                turn_a = j;
                break;
            }
        }
    }
    //겹치는지 확인
    for(int i=1; i< words.size();i++){
        string before = words[i-1];
        string now = words[i];
        int leng = before.length();
        if(before[leng-1] != now[0]){
            turn_b = i;
            break;
        }
    }
    if(turn_a!=0 && turn_b!=0){
        if(turn_a > turn_b)
            turn = turn_b;
        else
            turn = turn_a;
    }
    else{
        if(turn_a > turn_b)
            turn = turn_a;
        else
            turn = turn_b;
    }
    if(turn != 0){
        num = turn % n + 1;
        turn = turn / n + 1;
    }
    answer.push_back(num);
    answer.push_back(turn);
    return answer;
}

너무 케바케로 푼거같지만.....

+ Recent posts