[Level 2] / [Python] 전력망을 둘로 나누기
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 위 그림처럼 간선이 제일 많은 노드인 #4에서 연결된 간선 중 하나를 끊고 노드 갯수를 비교하는 방법을 생각하였다. 하지만 테스트케이스 8번부터 오류를 출력하였고 반례를 찾아야만 했다. 위 그림과 같은 경우 처음에 생각했던 방식대로 진행하게 되면 #3 노드의 간선 중 하나를 끊게 되고 (3, 6)개로 나누게 된다. 하지만 정답은 #4, #5 또는 #4, #6 의 간선을 끊어 (4, 5)..
[Level 2] / [Python] 두 큐 합 같게 만들기
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 생각나는 대로 직관적으로 작성하고 이게 되나..? 했는데 맞았다! 대신 많이 지저분하다. from collections import deque def solution(queue1, queue2): answer = 0 q1 = deque(queue1) q2 = deque(queue2) sum_ = sum(q1) + sum(q2) mid_ = sum_ // 2 q1_s = sum(q1) ..
[Level 2] / [Python] 가장 큰 사각형 찾기 - DP (Dynamic Programming)
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해결 방법 DP (Dynamic Programming) 을 적용하여야 합니다. 알고리즘도 공부하였고 이해도 하였는데 막상 문제에 적용하려니 너무 어려웠습니다. 접근 방법 1행 (array[1][:])과 1열 (array[:][1])은 왼쪽, 위쪽이 없으므로 미리 처리합니다. 따라서 (1, 1)부터 탐색을 진행합니다. 진행하면서 현재 값이 1인지 확인 후 (왼쪽,위쪽,왼쪽+위쪽) 의 최솟값 + 1 ..
[Chapter 6] 정렬 (Sorting)
·
BOOK/이것이 코딩 테스트다
보호되어 있는 글입니다.
[Chapter 5] DFS/BFS
·
BOOK/이것이 코딩 테스트다
보호되어 있는 글입니다.
[Python] 동적 계획법 (Dynamic Programming)
·
Develop/Python
1. DP (Dynamic Programming) 란?복잡한 문제를 여러 개의 작은 부분 문제 (Sub-Problem)로 나누어 해결하는 방법 !(작은 문제에서 구한 답을 다시 그것을 포함하는 큰 문제에서 사용)한번 계산한 문제는 다시 계산하지 않도록 하는 방법 ! 대표적인 예시로 피보나치 수열이 있습니다.피보나치 수열은 N번째의 값 = N-1 번째의 값 + N-2 번째의 값을 계산하는 수열입니다.위 그림처럼 분할하여 답을 구하는데, 중간에 중복 호출이 발생하기 떄문에 Memoization 기법을 사용합니다. Memoization 이란?프로그래밍 할 때, 반복되는 결과를 메모리에 저장하여 중복호출 되었을 때, 한 번 더 계산하지 않고 메모리에 저장되어 있는 것을 가져와서 재활용 하는 기법 입니다.장점으로..
[Level 2] / [Python] 배달 - 다익스트라 (Dijkstra)
·
Coding Test/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다익스트라 알고리즘을 적용하여 해결 import heapq def dijkstra(dis, visited): heap = [] heapq.heappush(heap, [0, 1]) while heap: cost, node = heapq.heappop(heap) for c, n in visited[node]: if cost + c < dis[n]: dis[n] = cost + c heapq.heapp..
[Python] 다익스트라 (Dijkstra)
·
Develop/Python
1. 다익스트라 (Dijkstra) ?최단 경로를 구하는데 사용되는 알고리즘 중 하나입니다.즉, 한 지점에서 다른 한 지점까지의 최단 경로한 지점에서 다른 모든 지점까지의 최단 경로모든 지점에서 다른 모든 지점까지의 최단 경로를 구하는 알고리즘입니다.자료구조로는 Graph를 사용하며, 노드(vertex)와 경로 또는 거리 는 간선(edge)을 사용하여 실제 거리를 표현합니다. 2. 다익스트라 알고리즘의 과정다익스트라 알고리즘은 매번 가장 거리가 짧은 노드를 선택해서 정해진 경로에 따라 과정을 계속적으로 반복하게 됩니다.출발 노드를 지정최단 거리 리스트 초기화 (매번 최단 기록 갱신)방문하지 않은 노드 중 가장 거리가 짧은 노드 선택해당 노드 방문 후 다른 노드로 가는 거리를 계산 후 최단 거리 갱신위 과..
욱근욱
'분류 전체보기' 카테고리의 글 목록 (71 Page)