https://school.programmers.co.kr/learn/courses/30/lessons/178871
0. 해쉬맵은 키값기준 오름차순으로 기본정렬되어 있다.
내림차순하려면 선언시 greater<type> 을 추가하면된다.
1. 의사코드
m1 : 이름, 인덱스 저장
m2 : 인덱스, 이름저장
1. calling(현재이름)으로 이전이름을 찾는다.
2. m1, m2를 각각 값에 알맞게 swap 해준다.
ex : m1[kai]=3 , m1[pve]=2 ---> m1[kai]=2, m1[pve]=3
m2[3]=kai, m2[2]=pve -> m2[2]=kai, m2[3]=pve
3. m2.second를 순차적으로 출력한다. (idx 오름차순으로 자동 정렬됨)
2. 전체코드
#include <bits/stdc++.h>
using namespace std;
vector<string> answer;
map<string, int> m1; //이름,현재인덱스 저장
map<int,string> m2; //현재인덱스, 이름 저장
vector<string> solution(vector<string> players, vector<string> callings) {
for(int i=0;i<players.size();++i){
v1.push_back({players[i],i});
m1[players[i]]=i;
m2[i]=players[i];
}
for(auto calling : callings){
int idx = m1[calling];
string prev_name = m2[idx-1];
string cur_name=calling;
m1[cur_name]=m1[cur_name]-1;
m1[prev_name]=m1[prev_name]+1;
m2[idx]=prev_name;
m2[idx-1]=cur_name;
}
//sort(m2.begin(),m2.end()); //맵은 기본값으로 키값기준 오름차순 정렬이다!
for(auto item : m2){
//cout<<item.second<<" ";
answer.push_back(item.second);
}
return answer;
}
'Algorithm > 구현' 카테고리의 다른 글
백준 14719 빗물 c++ // 구현, 그리디 (0) | 2024.05.14 |
---|---|
프로그래머스 귤고르기 c++ // 공간복잡도 공식, 구현 (0) | 2024.03.28 |