백준풀이(4)
-
[ Python] 백준 10819번 차이를 최대로 / 브루트포스 그림 풀이
문제 N개의 정수로 이루어진 배열 A가 주어진다. 이때, 배열에 들어있는 정수의 순서를 적절히 바꿔서 다음 식의 최댓값을 구하는 프로그램을 작성하시오. |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]| 입력 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. 출력 첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다. 예제 입력 1 6 20 1 15 8 4 10 예제 출력 1 62 아이디어 생각하기 대체 최대값이 왜 62나 나오지? 라고 생각했다... (최대값 - 최소값) + (2번째 최대값 + 2..
2023.02.14 -
[Python] 이진 탐색 기초/ 백준 2110번 공유기 설치 파이썬 풀이
이진탐색: 배열 내부의 데이터가 정렬되어 있을 때 시작점, 끝점, 중간점을 이용하여 원하는 값을 찾는 탐색법 시작점을 start 중간점을 mid, 끝점을 end라고 부르겠다 이진탐색은 주어진 범위가 엄청 클 때 사용할 수 있고, 배열의 원소들은 오름차순으로 정리되어야 한다. 코드 작성 순서 (1) 이진탐색의 시작점과 끝점을 설정 start= 0 end = 배열에서 가장 큰 수, 혹은 주어진 최대값 (2) 이진탐색 수행 while(start
2023.02.07 -
[Python] DFS/BFS 알고리즘 / 백준 1260 그림 풀이 /
개요 그래프에서 노드(정점)와 간선으로 표현된다. 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다. 두 노드가 간선으로 연결되어 있다면 인접하다. 라고 표현한다. DFS (깊이 우선 탐색) 그래프에서 깊은 부분을 우선적으로 탐색한다. BFS 알고리즘 (너비우선탐색) 노드에서 갈 수 있는 모든 노드를 다 방문한다. 말 그대로 너비에서 연결된 모든 곳을 일단 큐에 담는다 (1) 시작 노드를 큐에 append한 후 방문처리 (2) 큐에서 노드를 POP, 인접 노드 중 방문하지 않은 노드를 모두 큐에 append (3) 2번 과정을 q가 빌 때까지 반복한다. 주의사항 from collections import deque q= deque([v]) q.popleft() q.pop대신 im..
2023.01.29 -
[Python] 그리디 알고리즘백준 1783번 병든 나이트 풀이 /자세한 그림 풀이...
문제 병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다. 2칸 위로, 1칸 오른쪽 1칸 위로, 2칸 오른쪽 1칸 아래로, 2칸 오른쪽 2칸 아래로, 1칸 오른쪽 병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4번보다 적은 경우(방문한 칸이 5개 미만)에는 이동 방법에 대한 제약이 없다. 체스판의 크기가 주어졌을 때, 병든 나이트가 여행에서 방문할 수 있는 칸의 최대 개수를 구해보자. 입력 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 ..
2023.01.23