computer_study

[python/c++] (key, value)로 변수저장하기 (dictionary, map) 본문

알고리즘/개념정리

[python/c++] (key, value)로 변수저장하기 (dictionary, map)

knowable 2020. 8. 12. 02:32

python - dictionary 자료형

 

key값과 value값으로 이루어져있다. (key값은 변할 수 없고, value값은 변경 가능하다.)

set, dict, list같은 값들은 key로 사용할 수 없다.

>>> root = dict()
>>> root['Fred'] = 'Fred'
>>> root['Barney'] = 'Fred'
>>> root[1] = 'Barney'
>>> root
{'Fred': 'Fred', 'Barney': 'Fred', 1: 'Fred'}

순서는 따로 없기때문에 index로 접근은 불가능하다. (key값으로 접근해야된다.)

 

 

if 'Fred' not in root:

위와 같은 방법으로 root에 해당 key값이 있는지 확인할 수 있다.

 

value를 확인하고싶다면 다음과 같이 확인할 수 있다.

if 'Fred' not in root.values():

 

 

for문에서 사용

key접근

>>> root = {'Fred':'Fred', 'Fred':'Tomas'}
>>> for key in root:
...     print(key)
Fred
Fred

 

value접근

>>> root = {'Fred':'Fred', 'Fred':'Tomas'}
>>> for value in root.values:
...     print(value)
Fred
Tomas

 

추가적인 사용법은 wikidocs.net/16043 에서 더 확인할 수 있다.

 

 

 

 

 

 

c++ - map 컨테이너

 

<map> 헤더를 추가 후 사용 가능하다.

 

형식

map<key,value>

 

내용

map<key, value> tmp;               // 선언

tmp.count(key);                    // key값에 대한 value가 몇개있는지 반환
tmp.find(key);                     // map안에서 key값을 찾아 iterator를 반환
tmp.size();                        // map의 크기 반환
tmp.insert(make_pair(key, value)); // 추가
tmp.clear();                       // 맵의 모든 원소 삭제

map은 2진 트리의 구조를 가지고있으므로, find의 시간복잡도는 nlog(n)을 보장한다. 

이때, n이 극단적으로 커지면 logn은 극단적으로 작아지기때문에, logn을 무시하고, 시간복잡도는 O(n)이라고 할 수 있다.

 

for문에서 사용

# include "map"

...

map<string, int> test;

for(auto iter = test.begin(); iter != test.end(); iter++){
        ...
}

 

 

 

예시

knowable.tistory.com/13?category=910135

 

[해시/union-find 알고리즘] BAEKJOON ' 4195'번 '친구 네트워크 '문제 (C++/python)

문제 : www.acmicpc.net/problem/4195 4195번: 친구 네트워크 문제 민혁이는 소셜 네트워크 사이트에서 친구를 만드는 것을 좋아하는 친구이다. 우표를 모으는 취미가 있듯이, 민혁이는 소셜 네트워크 사

knowable.tistory.com

knowable.tistory.com/23?category=910135

 

[탐색] BAEKJOON '1302'번 '베스트셀러'문제 (C++/python)

문제 : www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들

knowable.tistory.com

 

참고

https://codingdog.tistory.com/entry/c-set이나-map을-전체-순회하는-데-시간-복잡도는-얼마일까요
Comments