본문 바로가기

알고리즘

(5)
활동선택 알고리즘 활동선택 문제 (1,4),(3,5),(1,6) ... (12,14) 회의 종료시간이 가장 빠른 회의를 먼저 선택하면 된다. 종료시간을 기준으로 회의들을 오름차순 정렬한다. 종료시간이 가장 빠른 회의를 찾자마자 확정 (1,4) ⇒ 이제 4시 이후로 부터 회의가 가능하다. 4시 이후에 가장 빨리 끝나는 회의 찾기 (5,7) ⇒ 이제 7시 이후로 회의가 가능 7 시 이후로 가장 빨리 끝나는 회의 찾기 (8,11) ⇒ 이제 11시 이후로 회의가능 11시 이후로 가장 빨리 끝나는 회의 (12,14) ⇒ 정답은 4회 문제 전략 끝나는 시간을 기준으로 오름차순 정렬 빠르게 끝나는 회의를 선택하여 확정한다. 이후로 가능한 회의 중, 빠르게 끝나는 회의를 선택하여 확정한다.
사다리 문제 해결 알고리즘 # 밑에서 부터 올라가는걸 찾자 dr = [0,0,-1] #왼 오 위 dc = [-1,1,0] def find_position(arr): for i in range(n): if arr[n-1][i] == 2: return n-1, i #(r,c) def ladder(arr,r,c): while True: if r == 0: return c for k in range(3): nr = r + dr[k] nc = c + dc[k] if 0
sum 문제 해결 알고리즘 # 정순 max_v = 0 for i (N): total = 0 for j(N) total = arr[i][j] if max_v < total: max_value = total # 역순 for i (N): total = 0 for j(N) total = arr[j][i] if max_v < total: max_value = total # 대각선 total = 0 for i (n) total += arr[i][i] if max_v < total: max_value = total total = 0 for i (n): total += arr[i][n-1-i] if max_v < total: max_value = total
개구리 알고리즘 +2 -2 |-2|+2 1 => cur = 0 prev = 0 nextv = 0 result= 0 arr[0] = 2 nextv = arr[2] for _ (k) : nexts = a[cur] if a[cur] > 0 and prev < 0: nextv += -prev prev = arr[cur] cur += nextv if cur = N: # 인덱스 벗어날 때 return else: result += arr[cur] return result
회문 슈도코드 문자열 비교 t = abdabcd p = abc def function(): for i (n) flag = 1 for j (n) if t[i + j] != p[j] #맞은거 확인 flag = 0 break if flag : #flag가 참이면 return i return -1