프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설계
1. callings를 순회하면서 각 요소에 대해 players 내의 인덱스를 구하고 구한 인덱스에서 -1 한 값과 현재 값을 교환
2. 시간 초과 발생
3. 딕셔너리 구조를 사용
문제 풀이 (정답)
import Foundation
func solution(_ players:[String], _ callings:[String]) -> [String] {
var result=players
var order:[String:Int]=[:]
for (index,player) in result.enumerated(){
order[player]=index
}
for name in callings{
//이름 불린 애의 인덱스 저장
var targetIndex = order[name]!
//앞에 있는 애의 이름 저장
var forwardName = result[targetIndex-1]
result[targetIndex-1] = name
result[targetIndex] = forwardName
order[name]! -= 1
order[forwardName]! += 1
}
return result
}
정리
swapAt 메서드 사용, 시간복잡도 O(1)
//전달한 인덱스에 있는 요소들을 서로 바꿔줌
//[7, 6, 5, 5, 4, 3, 2, 2, 1, 1, 0]
mutableNums.swapAt(0, 1)
print(mutableNums)
//[6, 7, 5, 5, 4, 3, 2, 2, 1, 1, 0]
result[targetIndex-1] = name
result[targetIndex] = forwardName
를 아래로 구현
result.swapAt(targetIndex,targetIndex-1)
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / python] 의상 (0) | 2025.05.01 |
---|---|
[프로그래머스 / python] [PCCE 기출문제] 10번 / 공원 (0) | 2024.10.27 |
[프로그래머스 / swift] 2019 KAKAO BLIND RECRUITMENT - 후보키 (0) | 2024.07.01 |
[프로그래머스 / swift] 2020 KAKAO BLIND RECRUITMENT - 문자열 압축 (0) | 2024.06.20 |
[프로그래머스 / swift] 2020 KAKAO BLIND RECRUITMENT - 괄호 변환 (0) | 2024.06.19 |