전체 글34 선택 정렬 (Selection Sort) Schema선택되지 않은(정렬되지 않은) 원소들 중에서 가장 작은 값을 찾아서, 가장 앞에 두겠다. Algorithm2개의 변수 필요 : [정렬이 완료된 부분을 나타내는 start_idx], [가장 작은 값을 찾는데 임시로 넣어둘 min_idx]현재 가장 작은 값을 찾는다.Pivot을 설정(init 가장 앞)비교 후, 가장 작은 값 get정렬된 원소들을 앞에서렬된 원소들을 앞에서정렬된 원소들을 앞에서부터 차례로 늘려간다. Codedef SelectionSort(list): start = 0 length = len(list) for i in range(0, length-1): min_idx = i for j in range(i+1, length): .. 2024. 10. 5. [프로그래머스] Lv 3. 베스트앨범 def solution(genres, plays): answer = [] gen_play = {} gen_list = {} # 1. 장르별 재생 횟수 합산 for i, cnt in enumerate(plays): if genres[i] not in gen_play: gen_play[genres[i]] = cnt gen_list[genres[i]] = [(i, cnt)] # 곡의 인덱스와 재생 횟수를 저장 else: gen_play[genres[i]] += cnt gen_list[genres[i]].append((i, cnt)) # 기존 리스트에 추가 # 2. 장르별 .. 2024. 8. 20. [프로그래머스] Lv 2. 연속된 부분 수열의 합 [참고자료] - https://ksb-dev.tistory.com/302 프로그래머스 - 연속된 부분 수열의 합(Java)투포인터 문제입니다. 투포인터란, 두 가지의 포인터를 사용해 배열에서 조건과 일치하는 연속된 부분을 찾을 수 있는 방법입니다. 조건에 맞춰 서로 다른 두 가지의 포인터를 움직여야 합니다.ksb-dev.tistory.com위와 같은 방식으로 2개의 pivot을 생각하고 풀었다. 1. 런타임이 발생하는 코드def solution(sequence, k): l = len(sequence) diff = l answer = 0 small = 0 total = [] sum_ = 0 for pivot in range(l): total.append(s.. 2024. 8. 19. [프로그래머스] Lv 2. 두 원 사이의 정수 쌍 import mathdef solution(r1, r2): def distance (x1, y1): return (x1**2 + y1**2)**0.5 cnt = 0 for x in range (1, r2+1): # 해당 y최댓값 y_max = math.floor(math.sqrt(r2**2 - x**2)) # 해당 y최솟값 # x가 r1보다 크면, y_min = 0 if x >= r1 else math.ceil(math.sqrt(abs(r1**2 - x**2))) cnt += y_max - y_min + 1 return cnt * 4 처음에는for i in range(1, r2+1.. 2024. 8. 18. 이전 1 2 3 4 ··· 9 다음