본문 바로가기

전체 글

(10)
직방문제 보호되어 있는 글입니다.
넷마블 보호되어 있는 글입니다.
kakaomoblilty 보호되어 있는 글입니다.
divmod vs % def solution(arr, divisor): answer = [] # divmod (리스트 갯수가 클 때) # for item in arr: # if divmod(item, divisor)[1] == 0: # answer.append(item) # // , % 사용(갯수가 적어서 얘가 빠름) for item in arr: if item % divisor == 0: answer.append(item) if answer: answer.sort() else: answer.append(-1) return answer
divmod vs % def solution(arr, divisor): answer = [] # divmod (리스트 갯수가 클 때) # for item in arr: # if divmod(item, divisor)[1] == 0: # answer.append(item) # // , % 사용(갯수가 적어서 얘가 빠름) for item in arr: if item % divisor == 0: answer.append(item) if answer: answer.sort() else: answer.append(-1) return answer
배열 중복제거 1. Set을 이용하는 방법 ( 엘리먼트 순서가 바뀐다 ) arr = ['A', 'B', 'C', 'D', 'B', 'D', 'E'] arr_to_set = set(arr) # 집합 set으로 변환 arr2 = list(arr_to_set) # list로 변환 출력결과 -> ['C', 'A', 'E', 'B', 'D'] 2. For문을 이용하는 방법 ( 엘리먼트 순서가 유지된다 ) arr = ['A', 'B', 'C', 'D', 'B', 'D', 'E'] arr2 = [] for v in arr: if v not in arr2: arr2.append(v) 출력결과 -> ['A', 'B', 'C', 'D', 'E']
코드 실행 시간 측정(테스트) 코드를 작성하다 보면 어떤 해결방법을 채택할지 고민하게된다. 테스트케이스에 따라 다른 실행시간이 현저하게 차이날 수 있기 때문에 데이터의 테스트케이스를 꼭 고려해봐야하지만, 같은 상황이라면(데이터, 가독성) 속도가 빠른편을 채택하는 것이 좋다. 시간측정코드 import time start_time = time.time() # 시작 시간 저장 # 작업 코드 작성 print("WorkingTime: {} sec".format(time.time()-start_time)) # 현재시각 - 시작시간 = 실행 시간 (초단위) 테스트용으로만 사용하고 커밋시에 꼭 주석처리하거나 제거해주자 ! (Python 버전2에서는 print()구문 컴파일 못함)
fromJS(), toJS() 는 왜 쓸까? 결론부터 말하면 참조타입 변수들을 immutable하게 관리해줘야하기 때문이다. 1. 불변성(immutable)을 지켜주는 이유 -> 원시타입(boolean, string, number, null, undefined)말고 참조타입(reference, obj)의 경우 같은 메모리를 사용하기 때문에 A가 바뀌면 같은 메모리바라보는 B도 영향을 받아 의도하지 않는 동작(side-effect)을 함. -> 불변성이 지켜지지 않을 경우 diff 알고리즘이 dirty를 파악 못할 수 있다! (추가로 업데이트 성능 최적화가 필요 시 shouldcomponentupdate를 활용하면 됨. ) 2. 불변성 지켜주는 방법 -> 참조타입의 경우 map, fillter, concat 을 활용하여 새로운 객체나 배열을 반환 -..