새소식

코딩테스트/프로그래머스

[C++] 달리기 경주

  • -

[문제]

코딩테스트 연습 - 달리기 경주 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[문제 풀이]

map과 swap을 이용해서 쉽게 풀 수 있는 문제였다.

1. map을 이용해서 players의 모든 위치를 저장해주고

2. callings를 반복문으로 방문하면서 map에서 저장해둔 위치를 파악.

3. players에서 파악한 위치와 파악한 바로 앞의 위치의 플레이어를 바꿔주고 map에서도 해당 숫자 2개를 바꿔준다.

[회고]

.

[코드]

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

vector<string> solution(vector<string> players, vector<string> callings) {
    vector<string> answer;
    map<string, int> mp;
    for(int i = 0;i<players.size();i++){
        mp[players[i]] = i;
    }
    
    for(int i = 0;i<callings.size();i++){
        //callings가 부르는 플레이어의 위치 찾기.
        int temp = mp[callings[i]];
        //players에서 위치 바꾸기.
        mp[players[temp]] -= 1;
        mp[players[temp - 1]] += 1;
        swap(players[temp],players[temp - 1]);
    }
    
    answer = players;    
    return answer;
}

 

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[Swift] 과일 장수  (0) 2023.08.13
[Swift] 달리기 경주  (0) 2023.08.12
[Swift] 피로도  (0) 2023.08.09
[C++] 피로도  (0) 2023.08.09
[C++] 가장 먼 노드  (0) 2023.08.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.