이진탐색 컨닝페이퍼
이진탐색 일단 기본개념으로 lower bound,upper bound arr = [1, 2, 3, 3, 5, 6, 6, 8, 9, 10] left, right = 0, 9 target = 8 answer = -1 while left = target: #요기 >=를 >로 바꾸면 upper bound answer = mid right = mid - 1 else: left = mid + 1 print(answer) # 7 lower bound 코드다 -> >= 를 >로 바꾸면 upper bound 이분탐색 쓸거같은 냄새나는거 일단 이분탐색 그냥 뭐 큰숫자 찾는 이런 개념이아니라 그냥 탐색할때 대체적으로 많이 적용할수있는거같음 -> 이런거는 근데 아직까지 쉽게 적용을 못해봄 근데 이분탐색 자체가 시간복잡도가 O..
더보기
Bruteforce를 위한 순열,조합 컨닝페이퍼
자 이제 짐승같이 문제를 풀기위하여 Bruteforce를 하는데 일단 많이 나오는 순열,조합,중복순열,중복조합 각각 무슨라이브러리 임포트 해야하는지 어느건지 한줄 설명 간다. -> 이거 안하면 맨날 잊어버려 ㅠㅠ 아 맞다 시간복잡도 까지해서 n몇 넘으면 박살나는지도 적어야겠다 순열 뭐써야하는가? -> permutations import itertools a = [1,2,3,4] res = itertools.permutations(a, 2) 순서를 고려해서 뽑는 경우의수 -> 서로다른 n개에서 r개를 택하여 일렬로 나열하는 경우의 수. -> 이거는 앞뒤 순서 관계까지 고려한거 ex)(1,2) (2,1) 이 다른거 5개에서 3개 뽑는다면 5x4x3 = 60 임 123에서 2개 뽑는경우 (1, 2) (1, 3..
더보기