전체 카테고리

Algorithm & Data Structure

[백준] 동전1 (2293번) - Python / 알고리즘

✅문제 - 동전1 (2293번)  ✅필요 알고리즘 개념 - DP🔵DP의 적용◼ 모든 동전의 가격을 고려하며 dp를 만들면 경우의 수가 복잡하므로 동전의 종류를 1개씩 늘려간다.◼ 처음에는 가장 저렴한 동전 1개만 사용하여 dp를 만든다. (예제 입력의 경우 가치가 1인 동전을 사용한다.)동전의 가치가 1인 경우 DP는 위의 표와 같다. 위의 표는 동전의 가치가 1인 동전만을 사용해 k원을 만든 것이다.◼ 동전의 가치가 2인 경우를 dp에 추가하자현재 dp[n]은 n원을 1원짜리 동전으로 만들 때의 경우의 수이다.2원 짜리 동전을 사용하게 되면 (1) 1원짜리 동전으로만 경우의 수를 만든 경우와 (2) 2원짜리 동전도 사용한 경우의 수가 있다.위의 (1)의 경우의 수가 dp[n] 이고 (2)의 경우는 d..

Algorithm & Data Structure

[백준] 내리막 길 (1520번) - Python/알고리즘

✅문제 - 내리막 길 (1520번) ✅필요 알고리즘 개념 - DP/DFS🔵 DFS 와 BFS 중 무엇을 쓸 것인가◼ 이 문제는 경로 찾기 문제와 유사하므로 DFS와 BFS 중 하나를 써야 하는데 왜 DFS를 사용할까?이 문제의 경우 경로가 겹칠 때 다른 경로에게 영향을 주기 때문에 먼저 DFS로 한 경로를 끝까지 탐색하는 것이 유리하다. 🔵 DP 사용 법 ◼ 2차원 리스트에 (x,y)에서 (row,col) 까지 가는 경우의 수를 저장한다. DFS를 진행하던 도중 이미 들렀던 지점인 경우에는 바로 dp 값을 사용한다. ✅코드 설명import sysrow,col = map(int,sys.stdin.readline().rstrip().split())board = [] delta = [(1,0),(-1,0)..

Algorithm & Data Structure

[백준] 이분 그래프 (1707번) - Python / 알고리즘

✅문제 - 이분 그래프 (1707번) ✅필요 알고리즘 개념 - BFS🔵 BFS 활용 방법◼ 이 문제는 연결된 두 Node를 다른 색으로 색칠하는 것이 가능한지 물어보는 문제이다. 예를 들어 아래 처럼 인접한 두 노드를 서로 다른 색으로 칠할 수 있다면 이분 그래프로 나눌 수 있는 그래프이다. 하지만 아래의 경우 Node 5번을 보면 빨간 Node와 파란 Node와 모두 연결돼 있기 때문에 인접한 Node와 다른 색으로 칠할 수 없다. 그러므로 이분 그래프가 아니다.이 아이디어를 활용하여 BFS를 구현하면 이분 그래프를 확인할 수 있다.✅코드 설명 - BFS 구현 부분def bfs(graphs,visited): queue = deque() # graphs 는 edge를 입력 받은 list이다 ..

Algorithm & Data Structure

[백준] 파일 합치기 (11066번)/(Knuth optimization) - Python

✅문제 - 파일 합치기 (11066번) ✅필요 알고리즘 개념 - DP🔵특정 경로를 지나는 DP◼ 예제 입력 40 30 30 50의 경우위의 경우에 3가지 케이스가 존재할 수 있다.1) (1) + (2 + 3 + 4)2) (1+2) + (3+4)3) (1+2+3) + (4) 즉 중간 경로로 k를 선택해 지나가는 것이다. 그러므로 dp를 1차원 배열이 아닌 2차원 배열로 만들어 준다.dp[start][end] = min(dp[start][mid] + dp[mid+1][end]) + cost[start][end]를 만족하는 dp를 만든다. ✅필요 알고리즘 개념 - Knuth optimizationdp[start][end] = min(dp[start][mid] + dp[mid+1][end]) + cost[st..

Algorithm & Data Structure

[백준] K번째 수 (1300번) - Python/알고리즘 설명

✅문제 - K번째 수 (1300번) ✅필요 알고리즘 개념 / 풀이 알고리즘🔵이분탐색◼ 소주병 뚜껑의 숫자 맞추기 처럼 Up Down 식으로 원하는 값을 찾아 가는 것이다.◼ 정렬된 리스트에서만 사용이 가능하다. 🔵아이디어 - 이분탐색의 적용◼ 숫자가 N^2개 존재하므로 1~N^2 번째 숫자까지 존재한다.◼ k번째를 찾는 것이 아니라 1~N^2까지의 숫자를 선택해 해당 숫자보다 작은 숫자가 k개인 숫자를 찾는다. 🔵아이디어 - 특정 숫자보다 작은 숫자의 탐색◼ 입력 받은 2차원 배열은 구구단의 성질을 띈다. ◼ 이 성질을 이용하면 구구단 i단 에서 k보다 작은 숫자의 갯수는 k//i가 된다.◼ 이 성질을 이용하여 1~N을 탐색하며 k보다 작은 숫자의 갯수를 센다. ✅코드import sysinput =..

Algorithm & Data Structure

[백준] 공유기 설치 (2110번) - Python

✅문제 - 공유기 설치 (2110번)  ✅필요 알고리즘 개념 - 이분탐색◼ 이 문제의 키 포인트는 공유기 사이의 거리를 이분 탐색으로 찾는 것이다.◼ 공유기 간의 가장 가까운 거리는 1 가장 먼 거리는 마지막 좌표 - 첫 좌표가 된다. 이 거리 사이에서 이분탐색을 통하여서 최대 거리를 구하면 된다. ✅코드import sysimport bisectinput = sys.stdin.readlinen,c = map(int,input().rstrip().split())house_distance = []for _ in range(n): house_distance.append(int(input().rstrip()))# 이분 탐색은 정렬된 list에서 사용하는 것이므로 정렬한다.house_distance.sort..

후뿡이
'분류 전체보기' 카테고리의 글 목록 (13 Page)