정렬

파이썬

[python] 프레임으로 나눠진 이미지들을 동영상으로 합치기

아래 코드에서 주의할 점은, 본인의 프레임 개수는 약 370개로 0번 ~ 369번 이미지들이 존재했다. 만약 프레임 개수가 천단위가 넘어간다면 추가적인 배열이 하나 더 필요할 것이다. 배열을 따로 하는 이유는, sorting 할때 0, 1, 2... 순서가 아니라 0, 1, 10, 100, 101... 순으로 sorting 되기 때문이다. natsort를 이용하는 방법도 있다고 한다! 그리고 fps를 20으로 지정해뒀는데, 이건 원하는 fps 값에 따라 적절히 바꿔주면 된다 import cv2 import re import os import numpy as np path = '이미지들(프레임들)이 모여있는 폴더 경로' # 파일 가져오기 def get_files(path): for root, subdirs..

알고리즘/백준(BOJ)

[백준/C++] 22354번 돌 가져가기

https://www.acmicpc.net/problem/22354 22354번: 돌 가져가기 처음 위치 기준 왼쪽에서 $5,\ 6,\ 2,\ 3,\ 4,\ 7,\ 8,\ 1$번째 돌을 순서대로 가져가면 $3$번째 돌과 $5$번째 돌을 가져갈 때 점수를 얻어 $13$점이 된다. www.acmicpc.net 내가 푼 문제중 제일 티어가 높은 문제이다.. 게다가 그리디라 생각하기가 엄청 어려웠다 우선 돌을 최적으로 가져가는 방법에 대해 설명하겠다. 1. 연속된 돌은 반드시 1개만 가져갈 수 있다 (= 연속된 돌에서는 점수를 2번 이상 얻을 수 없다) -> 이 부분은 돌들을 그려놓고 한번 해보길 바란다. 이웃한 돌들이 색이 달라야 점수를 얻는데, 이웃한 돌이 같은 색이면 애초에 점수를 얻을 수 있는 환경이 아..

알고리즘/백준(BOJ)

[백준/C++] 1377번 버블 소트

https://www.acmicpc.net/problem/1377 1377번: 버블 소트 첫째 줄에 N이 주어진다. N은 500,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 A[1]부터 A[N]까지 하나씩 주어진다. A에 들어있는 수는 1,000,000보다 작거나 같은 자연수 또는 0이다. www.acmicpc.net 당연한 말이지만, 문제에 있는 코드로 풀면 시간초과로 틀린다. STL에 있는 sort를 활용하는데, 문제의 답은 어떻게 구하냐? pair를 이용하여 처음 입력받을 때, 숫자와 인덱스를 같이 저장해주면 된다! 버블 소트는 한번 정렬할 때 마다 제일 큰 수가 맨 뒤로 이동한다. 그렇게 되면 다른 수들은 자연스레 한칸 앞으로 움직이게 되고 버블 소트가 진행되고 난 후 배열의 인덱..

알고리즘/백준(BOJ)

[백준/C++] 1461번 도서관

https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 문제가 한번에 이해가 안될수도 있으니,, 꼼꼼히 읽어보셔야 한다. 우선, 이 문제는 누가봐도 정렬과 그리디 알고리즘이다. 이 문제를 풀 때 3가지 key point가 있다고 생각한다. 1. 음수부분과 양수부분을 구별 (음수의 개수 세기) 2. m개의 책을 들고 다닐 수 있으므로 m칸씩 이동 3. 맨 끝 값(제일 작은 음수, 제일 큰 양수) 중 절댓값이 더 큰 것을 마지막에 방문 (= 되돌아올 필요 없으..

알고리즘/백준(BOJ)

[백준/C++] 2470번 두 용액

https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net N이 최대 100,000까지 입력이다. 하나하나씩 다 계산해가며 비교하면 100,000 x 100,000으로 1초안에 절대 풀 수 없게 된다. 그래서 이 문제는 이분탐색의 개념과 투 포인터를 활용한다. 우선, 배열을 쭉 오름차순으로 정렬한 뒤 (오름차순으로 정렬하면 음수는 절댓값이 큰 것이 앞에 오고, 양수는 절댓값이 큰 것이 뒤로 간다.) 두 개를 더 했을 때 ..

알고리즘/백준(BOJ)

[백준/C++] 16936번 나3곱2

https://www.acmicpc.net/problem/16936 16936번: 나3곱2 나3곱2 게임은 정수 하나를 이용한다. 가장 먼저, 정수 x로 시작하고, 연산을 N-1번 적용한다. 적용할 수 있는 연산은 두 가지 있고, 아래와 같다. 나3: x를 3으로 나눈다. x는 3으로 나누어 떨어져야 www.acmicpc.net 어려워 보이지만 차근차근 따져보면 쉽게 풀리는 문제이다. 이 문제에서 가능한 연산은 오직 나누기3과 곱하기2 뿐이다. 그렇다면, 맨 앞에는 어떤 수가 와야할까? -> 인수3을 가장 많이 가지고 있는 숫자가 맨 앞에 와야한다! 왜 그럴까? 6 9를 예시로 보자, 6에서 9를 만들 수 있을까 라고 물어보면 답은 절대 불가능하다 이다. 15와 9를 예시로 들어도 마찬가지이다. 1. 곱..

beomseok99
'정렬' 태그의 글 목록