Python에서 이진탐색을 라이브러리로 제공한다 ! bisect 라이브러리는 정렬된 배열 내에서 특정 원소를 찾을 때 O(logN)으로 동작한다. bisect_left() 함수 : 정렬된 순서를 유지하면서, 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾는 메소드 bisect_right() 함수 : 정렬된 순서를 유지하면서, 리스트 a에 데이터 x를 삽입할 가장 오른쪽 인덱스를 찾는 메소드 중요한건 정렬된 순서를 유지! 하면서 인덱스를 찾는것이다 예를 들어 리스트 [1, 2, 4, 4, 8] 이 있다면 bisect_left(a, 4)는 리스트에서 4가 처음으로 등장하는 위치인 2를 반환한다. 그리고 bisect_right(a, 4) 는 리스트를 4가 마지막으로 등장하는 위치 인덱스 +1 의 위치인..
전체 글
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.나의 시간 초과 코드 ㅋㅋㅋㅋ 답은 나오는데....비효율적이라는 거지 # 2110 공유기 설치 from itertools import permutations n,c = map(int, input().split()) array = [] for i in range(n): array.append(int(input())) result = 0 array.sort() # 탐색을 위해 정렬하기 for case in permutations(array, c): temp = n for i in range(c-1): temp = min(temp, case[i+1]-case[i]) result = max(temp, result) print(result) 이 문제의 유형은 이진탐색이다 .. 이진탐색 !!! 즉, '최대 인접 거..
https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net n = int(input()) array = list(map(int, input().split())) dp = [1]*n # 자기 자신 1개로도 길이가 1인 수열이 될 수 있으므로 1로 초기화를 해줍니다 ! for i in range(n): for j in range(i, n): if array[i] > array[j]: ..
def solution(N, stages): answer = [] length = len(stages) for i in range(1, N+1): count = stages.count(i) if length == 0: fail = 0 else: fail = count/length answer.append((i, fail)) # 실패율이 0이어도 필요함 length -= count answer.sort(key = lambda x : x[1],reverse = True) answer = [i[0] for i in answer] return answer 유형 : 정렬 원래 풀이는, 스테이지 도달한 사람을 센 array, 실패율 array, 실패한 사람 array 각각 만들어줬었는데 시간 초과가 났다 ㅠㅠ 핵심..
·개발일기
21일이면 습관이 형성된다고 하는데 !! 뿌듯하다 남은 방학 동안도 알고리즘 공부 제대로 정복하겠어 ! 플레 가보자고 ~!
·iOS
콜백 함수 콜백함수 어디서 많이 들어봤는데 대체 뭘까!!!!! callback 함수란 1. 다른함수의 인자로써 이용되는 함수 2. 어떤 이벤트에 의해 호출되어지는 함수 오케이... 엄청 간단한 의미었다 !
https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net n = int(input()) a = [] for i in range(n): a.append(input().split()) a.sort(key=lambda x:(-int(a[1]), int(a[2]), -int(a[3]), a[0])) for i in a: print(i[0]) lambda 함수 는 익명함수 ! 즉 이름이 없는 함수이다. runtime에 생성해서 사용할 수 있..
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net union 은 visited 여부를 확인하기 위한 리스트이다. index는 while문을 중단시키기 위한 지점이 필요해서 만들었다. for 문 2번 돌면 인구이동을 각 칸에 대해 모두 진행했다는 것이므로 break 로 탈출한다. '인구이동' 즉 while문 한번씩 처음부터 끝까지 실행되는 횟수를 result 변수로 카운트하고 있다. Queue 가 다 비면 -> 연합 구성이 끝났다는 ..