메모리의 연속 공간에 값이 채워져 있는 형태
-> 인덱스를 통해서 참조할 수 있다. (장점)
-> 메모리가 연속적으로 붙어있기에 새로운 값을 삽입하거나, 특정 인덱스의 값을 삭제하기가 어렵다. (단점)
값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조.
인덱스를 통해서 접근을 할 수 없다.Head 포인터부터 순서대로 접근해야 한다.
-> 접근하는 속도가 느리다.
연결이 포인터로 이루어져있기에 데이터를 삽입하거나, 삭제하는 연산 속도가 빠르다.
크기가 정해져 있지 않다.
*파이썬에서는 배열과 리스트를 크게 구별하여 사용하지 않는다.
각 자료구조의 장점만을 모아서 구현되어있다.
Key Value쌍으로 이루어진 자료구조.
특징
dict ={}
와 같이 생성한다.
중복을 허용하지 않는 자료구조이다.
수학에서의 집합의 개념을 생각하면 된다.
eset = set()
eset = {}
하단의 경우 단순 값의 연속이 들어가면 Set 값 밸류 쌍이 들어가게 되면 Dict로 생성된다.
와 같이 생성한다.
set의 경우 중복이 삭제되는것을 확인할 수 있다.
코테문제 풀이
- 평균구하기
def solution(numbers): return sum(numbers)/len(numbers)
- 약수의 합
def solution(num): return sum(value for value in range(1, num+1) if(num%value ==0))
- 자릿수 더하기
def solution(n): llist = list(map(int,str(n))) return(sum(llist))
리스트 컴프리핸션 사용
def solution(n): return sum([int(value) for value in str(n)])
- 주사위게임1
def solution(a, b): answer =0; if(a%2!=0 and b%2!=0): answer = a*a + b*b elif(a%2==0 and b%2==0): answer = abs(a-b) else: answer = 2*(a+b) return answer
5.포켓몬
def solution(nums): group = set(nums) return min(len(group),len(nums)/2)
- 숫자 문자열과 영단어
def solution(s): num_list=['zero','one','two','three','four', 'five','six','seven','eight','nine'] for a in range(0,10): s = s.replace(num_list[a],str(a)) return int(s)
- 달리기 경주
def solution(players, callings): dict ={} n=0 for i in players: dict[i] = n n= n+1 for name in callings: score = dict[name] dict[name] -=1 dict[players[score-1]] +=1 players[score-1],players[score] = players[score],players[score-1] return players