문제 소개
사실 문제를 처음보고 이해를 못했는데 🥲 예시를 보고 이해가 되었다.
과정은 다음과 같다.
- 좌표를 오름차순으로 정렬하고, 중복되는 값을 제거해준다.
- 원래 배열에 1번에서 만든 정렬된 배열의 인덱스로 바꾼뒤 출력해준다.
문제 풀이
아래처럼 nums를 Set으로 만들어 준 뒤, 정렬했다.
// Set<Int>로 만들어주는 부분!
let arr = Set(nums).sorted()
아래와 같이 딕셔너리를 만든다
// 인덱스를 value, 배열의 값을 key로 딕셔너리 자료구조로 만들기
let dic = Dictionary(uniqueKeysWithValues: arr.enumerated().map { ($1, $0) })
정답 코드
import Foundation
let n = Int(readLine()!)!
var nums = readLine()!.split(separator: " ").map { Int($0)! }
func main() {
var ans = ""
let arr = Set(nums).sorted()
let dic = Dictionary(uniqueKeysWithValues: arr.enumerated().map { ($1, $0) })
for num in nums {
ans += "\(dic[num, default: 0]) "
}
print(ans)
}
main()
'→ Problems' 카테고리의 다른 글
[Algorithm] 백준 - 9251번 LCS (Swift) (0) | 2024.08.14 |
---|---|
[Algorithm] 백준 - 11444번 피보나치 수 6 (Swift) (0) | 2024.08.13 |
[Algorithm] 백준 - 13560번 축구 게임 (Swift) (0) | 2024.08.12 |
[Algorithm] 백준 - 1074번 Z (Swift) (0) | 2024.07.29 |
[Algorithm] 백준 - 11660번 구간 합 구하기 5 (Swift) (0) | 2024.07.28 |