지난번과 동일하게 746점....🥲
https://www.codetree.ai/missions/8/problems/hashmap-basic/description
HashMap 기본
문제
n개의 명령이 주어졌을 때, 각 명령을 수행하는 프로그램을 작성해보세요. 명령의 종류는 크게 3가지 입니다.
- add k v : (k, v) 쌍을 hashmap에 추가합니다. key가 k, value가 v라는 뜻입니다. 이때 만약 동일한 k가 이미 존재한다면, v로 덮어씁니다.
- remove k : key가 k인 쌍을 찾아 hashmap에서 제거합니다. 잘못된 입력은 주어지지 않습니다.
- find k : key가 k인 쌍이 hashmap에 있는지를 판단합니다. 있다면 해당하는 value를 출력하고, 없다면 None을 출력합니다.
입력 형식
첫 번째 줄에는 n이 주어집니다.
두 번째 줄 부터는 n개의 줄에 걸쳐 각 명령이 한 줄에 하나씩 주어집니다. 각 명령에 주어지는 key와 value는 전부 숫자입니다. 명령들은 순서대로 수행되어야 합니다.
- 1 ≤ n ≤ 100,000
- 1 ≤ 주어지는 숫자 ≤
출력 형식
결과를 한 줄에 하나씩 출력합니다.
입출력 예제
예제 1
입력:
11
add 3 5
add 10000 1
find 3
find 5
find 10000
add 3 10
find 3
add 7 15
remove 3
remove 7
find 7
출력:
5
None
1
10
None
예제 설명
명령 find가 주어지는 횟수는 5번으로 3, 4, 5, 7, 11 번째 입니다.
- 3 번째 명령이 주어졌을 때, key 3에는 value 5가 들어있습니다.
- 4 번째 명령이 주어졌을 때, key 5는 존재하지 않습니다.
- 5 번째 명령이 주어졌을 때, key 10000에는 value 1이 들어있습니다.
- 7 번째 명령이 주어졌을 때, key 3에는 value 10가 들어있습니다.
- 11 번째 명령이 주어졌을 때, key 7은 존재하지 않습니다.
제한
시간제한: 1000ms
메모리 제한: 80MB
풀이
key-value 쌍으로 이루어진 자료구조이다. 딕셔너리 타입의 변수를 생성한 후 각 명령어에 맞게 동작을 수행한다.
코드
let n = Int(readLine()!)!
var dict = [Int: Int]()
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map{String($0)}
switch input[0] {
case "add":
dict[Int(input[1])!] = Int(input[2])!
case "remove":
dict[Int(input[1])!] = nil
case "find":
print(dict[Int(input[1])!] == nil ? "None" : dict[Int(input[1])!]!)
default:
break
}
}
반응형
'📖 Coding Test > CodeTree' 카테고리의 다른 글
[코드트리 챌린지] 6주차 - 그래프 탐색 (0) | 2023.10.16 |
---|---|
[코드트리 챌린지] 4주차 - 완전 탐색 (0) | 2023.10.04 |
[코드트리 챌린지] 3주차 - 완전 탐색 (0) | 2023.09.25 |
[코드트리 챌린지] 1주차 - 프로그래밍 연습 (0) | 2023.09.14 |
[코드트리 챌린지] 2주차 - DP (0) | 2023.09.14 |
댓글