[TIL]Day 7

이재희·2020년 12월 6일
0

TIL

목록 보기
7/312

클래스 내에서 객체의 주소를 변경하는 방법(feat.호준강사님)

class A:
    def method1(self):
        newObj = func(self)
        self.__dict__.update(newObj.__dict__)

하지만 권장하는 방법이 아니라고 하셨으니 사용하는데 유의해야겠다.

딕셔너리에서 get()

#key x의 값이 있으면 그 값을 반환하고 없으면 0을 반환
d[x] = d.get(x,0)

딕셔너리에서 items()

#items()를 통해 키와 벨류 모두 얻을 수 있다.
d = [k for k,v in d.items() if v > 0 ]

완주하지 못한 선수

나는 정렬로 풀었는데 이렇게 되면 최적이 NlogN이라 해쉬로 풀어야한다.

탐욕법

알고리즘의 각 단계에서 그 순간에 최적이라고 생각되는 것을 선택
탐욕법으로 최적해를 찾을 수 있는 문제
현재의 선택이 마지막 해답의 최적성을 해치지 않을 때

Set

#set 교집합
s = set(lost) & set(reserve)
#set 차집합
l = set(lost) - s

가장큰수

정렬에서 기준을 줘서 정렬

numbers.sort(key=lambda x : (x*4)[:4],revers=True)

조건에서 n의 제한을 읽고 조건을 만들었음.

join

''.join(arr)

에러처리
0인경우 0000 이런식으로 안되고 0으로 반환하도록

inmutable VS mutable

인뮤터블 - 변경불가 객체 ex) 문자열
뮤터블 - 변경가능 객체 ex) 리스트

enumerate

for i, num in enumerate(number):
	#i에는 인덱스 num에는 숫자

3항연산

collected = collected[:k] if k > 0 else collected

큰 수 만들기

틀린코드

def solution(number, k):
    c = []
    for i,n in enumerate(number):
        #c에 n보다 작은게 없도록 제거
        while c and c[-1] < n and k > 0:
            c.pop()
            k -= 1
        if k == 0:
            c.append(number[i:])
            break
        c.append(n)
    c = c[:k] if k > 0 else c 
    return ''.join(c)

테스트케이스 12 통과 못했음
수정코드

def solution(number, k):
    c = []
    for i,n in enumerate(number):
        #c에 n보다 작은게 없도록 제거
        while c and c[-1] < n and k > 0:
            c.pop()
            k -= 1
        if k == 0:
            c.append(number[i:])
            break
        c.append(n)
    c = c[:-k] if k > 0 else c 
    return ''.join(c)

k가 아니라 -k, 뒤에서부터 잘라내야하기 때문

for else문

for문과 같은 레벨에 else를 둬서 break없이 빠져나온 경우를 처리하는 방법

profile
오늘부터 열심히 산다

1개의 댓글

comment-user-thumbnail
2020년 12월 7일

잘보고있어요.

답글 달기