본문 바로가기
📖 Coding Test/CodeTree

[코드트리 챌린지] 5주차 - HashMap

by hyebin (Helia) 2023. 10. 4.

 

지난번과 동일하게 746점....🥲

 

https://www.codetree.ai/missions/8/problems/hashmap-basic/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

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
    }
}
반응형

댓글