[TIL] Day 3 - 자료구조와 알고리즘(3)

기역의궁전·2021년 4월 24일
0

dev2_TIL

목록 보기
3/18

알고리즘 설계 시, 머릿 속으로 풀어보며 단계별로 생각하고 최적화

get 메소드

dict에 key값으로 value 반환, key가 없으면 default 값을 value로 하여 반환

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
a.get('name')
#'pey'
a.get('phone')
# 0119993323 
a.get('foo', 'bar')
#'bar'

딕셔너리에서 key가 없는데 dict에서 찾으라 하면 "Key Error" 발생

set 메소드

  • dict와 비슷하지만 value없이 key만 있다.
  • mutable(list,set,dict 등등)은 값으로 가질 수 없다.
  • 중복이 자동으로 제거 된다.
  • 순서가 없다
a = {1,2,3}
b = {3,4,5}
c = a | b #합집합 {1,2,3,4,5}
c = a & b #교집합 {3}
c = a - b #차집합 {1,2}

b.add(8) # {3,4,5,8}
b.update([1,2]) # {1,2,3,4,5,8}
b.remove(8) # {1,2,3,4,5} 단 없으면 KeyError
b.discard(3) # {1,2,4,5} 없어도 KeyError x

ex) 체육복 문제 ( Greedy )

def solution(n, lost, reserve):
    s = set(lost) & set(reserve)  # 교집합 
    l = set(lost) - s 	         # 차집합
    r = set(reserve) - s  	# 차집합
    for x in sorted(r) :
        if x - 1 in l :
            l.remove(x-1)
        elif x + 1 in l :
            l.remove(x+1)
    
    return n-len(l)

기타 파이써닉한 표현

# 1
return [k for k,v in dict.items() if v > 0][0]

# 2
u[i-1:i+1] = [1,1]

# 3
return len([x for x in u[1:-1] if x > 0 ])

0개의 댓글