백준 algorithm

백준 1015 - 수열 정렬

cosmohoo 2020. 7. 15. 23:43
반응형

 

=> pair를 사용하여 문제를 해결하였습니다. 

=> pair.first : 원소 값

=> pair.secodn : 원래의 INDEX 값
=> 위와 같이 설정을 하고 문제를 풀었습니다. 

 

 

  • 입력받은 pair형 vector를 sort함수를 하여 정렬시킵니다. 
  • 정렬된 배열을 처음부터 읽으며, second 값을 기준으로 새로운 배열의 INDEX에 값을 대입합니다. 
  • ans [arr [i]. second]=i;

위와 같은 논리로 코드를 짰습니다. 

 

 

*pair형 배열을 만드는 방법을 찾지 못해, pair형 vector로 답을 생성하였습니다. 

 

 

 

 

 

<code>

 

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;


int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
   
    vector<pair<int, int>> arr;
    int ans[1001];
    
    int N;
    cin >>N;
    for(int i=0; i<N; i++)
    {
        int tmp;
        cin >> tmp;
        pair<int, int> tmpPair = make_pair(tmp, i);
        arr.push_back(tmpPair);
    }
    
    sort(arr.begin(), arr.end());
    
    for(int i=0; i<N; i++)
    {
        ans[arr[i].second]=i;
    }
    
    for(int i=0; i<N; i++)
    {
       cout<< ans[i]<<" ";
    }
    return 0;
}

 

반응형