새소식

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

[Swift] 달리기 경주

  • -

[문제]

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

 

프로그래머스

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

programmers.co.kr

[문제 풀이]

딕셔너리를 활용해서 player의 위치를 파악하면 쉽게 풀 수 있는 문제였다.

1. 딕셔너리를 활용해서 반복문으로 player를 방문하면서 해당 위치 저장.

2. callings를 방문하면서 딕셔너리에서 해당 위치가 어디에 저장되어 있는지 파악.

3. 딕셔너리에서 해당 위치와 그 바로 전의 위치, player에서 해당 위치와 그 바로 전의 위치 교환.

으로 쉽게 풀 수가 있다.

 

추가로 swift에는 swapAt이라는 함수가 있어서 

배열이름.swapAt(인덱스 위치, 인덱스 위치)

를 이용해 쉽게 배열에서 두 변수의 위치가 교환이 가능하다.

[회고]

.

[코드]

import Foundation

func solution(_ players:[String], _ callings:[String]) -> [String] {
    var mp: [String: Int] = [:]
    var player = players
    
    for i in 0..<players.count {
        mp[players[i]] = i
    }
    for i in 0..<callings.count {
        var temp = mp[callings[i]]!
        mp[player[temp]]! -= 1
        mp[player[temp - 1]]! += 1
        
        player.swapAt(temp, temp - 1)
    }
    
    return player
}

 

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

[C++] 신고 결과 받기  (0) 2023.08.14
[Swift] 과일 장수  (0) 2023.08.13
[C++] 달리기 경주  (0) 2023.08.12
[Swift] 피로도  (0) 2023.08.09
[C++] 피로도  (0) 2023.08.09
Contents

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

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