파이썬 Array/ List/ Map/ Set

최보훈·2025년 1월 11일
0

파이썬

목록 보기
1/2

배열

메모리의 연속 공간에 값이 채워져 있는 형태
-> 인덱스를 통해서 참조할 수 있다. (장점)
-> 메모리가 연속적으로 붙어있기에 새로운 값을 삽입하거나, 특정 인덱스의 값을 삭제하기가 어렵다. (단점)

리스트

값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조.
인덱스를 통해서 접근을 할 수 없다.Head 포인터부터 순서대로 접근해야 한다.
-> 접근하는 속도가 느리다.
연결이 포인터로 이루어져있기에 데이터를 삽입하거나, 삭제하는 연산 속도가 빠르다.
크기가 정해져 있지 않다.

*파이썬에서는 배열과 리스트를 크게 구별하여 사용하지 않는다.
각 자료구조의 장점만을 모아서 구현되어있다.

Map

Key Value쌍으로 이루어진 자료구조.

특징

  • 조회 속도가 빠르다. = O(1)
  • 값의 중복은 가능하지만, 키의 중복은 불가하다.

dict ={}
와 같이 생성한다.

Set

중복을 허용하지 않는 자료구조이다.
수학에서의 집합의 개념을 생각하면 된다.

eset = set()
eset = {}
하단의 경우 단순 값의 연속이 들어가면 Set 값 밸류 쌍이 들어가게 되면 Dict로 생성된다.
와 같이 생성한다.

set의 경우 중복이 삭제되는것을 확인할 수 있다.


코테문제 풀이

  1. 평균구하기
def solution(numbers):
    return sum(numbers)/len(numbers)  
  1. 약수의 합
def solution(num):
    return sum(value for value in range(1, num+1)
              if(num%value ==0))
  1. 자릿수 더하기
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. 주사위게임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)
  1. 숫자 문자열과 영단어
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)
  1. 달리기 경주
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
         

0개의 댓글