Where who wants to meet someone
백준 Swift [1620] 나는야 포켓몬 마스터 이다솜 본문
728x90
난이도
실버 IV
문제
https://www.acmicpc.net/problem/1620
내 답안
let input = readLine()!.split(separator: " ").map { Int($0)! }
let n = input[0]
let m = input[1]
var pocketMonDic = [String : Int]()
var pocketMonIntDic = [Int : String]()
for number in 0..<n {
let text = readLine()!
pocketMonDic[text] = number + 1
pocketMonIntDic[number + 1] = text
}
for _ in 1...m {
let question = readLine()!
pocketMonDic[question] == nil ? print(pocketMonIntDic[Int(question)!]!) : print(pocketMonDic[question]!)
}
- 처음에는 pocketMonIntDic이 없는 상태로 문제를 풀었음
(String : Int 쌍으로 딕셔너리에 저장하고, 입력 받은 값이 nil이면(String이 아니면) 딕셔너리의 filter를 통해 입력 받은 값을 value로 갖고 있는 key값을 출력하고, 입력 받은 값이 nil이 아니면 해당 값을 출력하도록)
- 하지만 딕셔너리에 값을 넣는 부분, 출력하는 부분 다 조금씩 방법을 달리해도 시간초과가 발생
- 입력받은 값이 숫자일 때, filter & key & joined or first 로 결과를 출력하는 부분이 시간 소요가 많이 되는 것 같아 숫자 값일 때 출력을 빠르게 할 수 있도록 별도의 딕셔너리를 만들어 테스트한 결과 통과할 수 있었음
'백준 알고리즘 문제 기록 > 집합과 맵' 카테고리의 다른 글
백준 Swift [1764] 듣보잡 (0) | 2023.08.11 |
---|---|
백준 Swift [10816] 숫자 카드 2 (0) | 2023.08.11 |
백준 Swift [7785] 회사에 있는 사람 (0) | 2023.08.08 |
백준 Swift [14425] 문자열 집합 (0) | 2023.08.08 |
백준 Swift [10815] 숫자 카드 (0) | 2023.08.08 |