๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Code Tree

[์ฝ”๋“œํŠธ๋ฆฌ] HashMap ์—ฐ์Šต๋ฌธ์ œ

728x90

Hash Map ์‚ฌ์šฉ ์˜ˆ์‹œ, ํ•ด์‹œ๋งต, code tree, cpp, ์ž๋ฃŒ๊ตฌ์กฐ, ๋ฌธ์ œ, ์˜ˆ์ œ

 

๋ฌธ์ œ

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 ≤ ์ฃผ์–ด์ง€๋Š” ์ˆซ์ž ≤ 

์ถœ๋ ฅ ํ˜•์‹

๊ฒฐ๊ณผ๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

 

๋‚˜์˜ ํ’€์ด

 

#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;

int main() {
    string st;
    int n;
    int k=0; int v=0;
    unordered_map<int, int> m;
    cin >> n;
    for(int i=0; i<n; ++i){
        cin >> st >> k;
       if(st=="add") {
           cin >> v;
           m[k] = v;
        }
       if(st=="remove") m.erase(k);
       if(st=="find"){
           if(m.find(k) != m.end()){
               cout << m[k]<<"\n";
           }else{
               cout<<"None"<<"\n";
           }
       }
    }
    return 0;
}

 

 

๋ฌธ์ œ ์ถœ์ฒ˜ ์ฝ”๋“œํŠธ๋ฆฌ
728x90