전체 글 205

[Python/파이썬] 스펙트로그램으로 노래의 구간을 찾아보자

안녕하세요. 오늘은 스펙트로그램을 통해서 해시값을 추출한 후에, 두 노래가 어느 구간에서 일치율이 높은지를 알아보는 코드를 소개하려합니다. 즉, 전체 노래가 DB에 저장되어 있고, 인식되는 노래가 DB의 어느 노래와 일치하는지, 그리고 그 노래의 어떤 부분에서 일치하는지를 확인하는 코드를 소개해드립니다. (설명을 생략하고 코드만 궁금하신 분들은 하단으로 내리시면 확인하실 수 있습니다.) 설명에 앞서 아래의 모든 내용은, Shazam의 논문에 근거하여 작성된 글을 바탕으로 작성됨을 미리 알려드립니다. 이 코드는 "Shazam"에서 오픈 소스로 공개된 코드를 기반으로 구성했습니다. 샤잠에서는 스펙트로그램을 통해서 peak point를 추출하고, 해당 peak point를 통해서 해시값을 구성합니다. 이런 해..

Python 2023.07.20

BFS/DFS란?

오늘은 기본적인 알고리즘인 DFS와 BFS에 대해서 알아보겠습니다. BFS란? BFS란 Breadth-First Search의 약자로 번역하면 너비 우선 탐색입니다. 이는 트리 구조에서 많이 사용되곤 합니다. 어떤 대상 노드로부터 가장 가깝게 연결된 노드들부터 탐색하며 순차적으로 트리의 전체를 순회하는 구조를 일컫습니다. (트리의 용어가 어색한 분들은, 아래의 그림을 보고 우선은 단순하게 이런 식으로 생긴 놈이구나 라고 생각하시면 좋을 것 같습니다.) 아래의 자료를 보면 금방 이해하실 수 있습니다. 루트 노드인 1로부터 가장 가깝게 연결된 3개를 순서대로 순회합니다. 그 후, 2와 연결된 노드를 방문하고, 최종적으로는 트리의 모든 노드를 방문하는 방법입니다. 그럼 BFS의 소스 코드를 살펴보겠습니다. 제..

BOJ/BFS DFS 2023.07.19

[백준/BOJ] 2992번 크면서 작은 수 (자바/Java)

https://www.acmicpc.net/problem/2992 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net 1. 문제 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 같다. 하지만, 123과 432는 구성이 같지 않다 입력 첫째 줄에 X가 주어진다. (1 ≤ X ≤ 999999) X는 0으로 시작하지 않는다. 출력 첫째 줄에 결..

BOJ/BackTracking 2023.07.18

[Java/자바] Could not resolve all files for configuration ':classpath'.

오류 메세지 더보기 A problem occurred configuring root project 'demo'. > Could not resolve all files for configuration ':classpath'. > Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.1. Required by: project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.1.1 > No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.1.1 was found. The con..

Error Record 2023.07.18

백트래킹이란? - 백트래킹으로 조합 구현하기 [Java/자바]

백트래킹이란? 백트래킹이란 해를 찾는 도중에 주어진 조건에 부합하지 않는 상태일 때, 즉시 이전 상태로 되돌아가 다른 경우의 수를 탐색하는 방법을 말합니다. 보통 이 알고리즘은 DFS나 BFS에서 사용됩니다. 모든 노드를 방문하는 알고리즘 중 하나인 DFS와 BFS에서 조건을 만족하지 않는 노드를 방문했을 때, 해당 노드로부터 연결된 모든 자식 노드들을 방문하지 않고 건너뛰는 방식입니다. 이를 가지치기(Pruning)이라고도 합니다. 저는 이 백트래킹을 조합의 경우의 수를 구하는 과정에서 처음 접했습니다. 따라서 m과 n이 주어졌을 때, 가능한 모든 경우의 수를 출력하는 코드를 소개하면서 백트래킹에 대해 코드와 함께 다뤄보겠습니다. 아래의 코드는 1부터 m까지의 정수가 있다고 했을 때, mCn의 모든 경..

CS/Algorithm 2023.07.18

[백준/BOJ] 1926번 도화지 (자바/Java)

https://www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 1. 문제 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다. 입력 첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m..

BOJ/BFS DFS 2023.07.14

[백준/BOJ] 18352번 특정 거리의 도시 찾기 (자바/Java)

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 1. 문제 어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다. 이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상..

BOJ/BFS DFS 2023.07.14

[백준/BOJ] 18352번 특정 거리의 도시 찾기 (자바/Java)

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 1. 문제 어떤 나라에는 1번부터 N번까지의 도시와 M개의 단방향 도로가 존재한다. 모든 도로의 거리는 1이다. 이 때 특정한 도시 X로부터 출발하여 도달할 수 있는 모든 도시 중에서, 최단 거리가 정확히 K인 모든 도시들의 번호를 출력하는 프로그램을 작성하시오. 또한 출발 도시 X에서 출발 도시 X로 가는 최단 거리는 항상..

BOJ/BFS DFS 2023.07.12

모각코 2차(230710)

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 1. 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지..

모각코 2023.07.11

[자바/Java] 추상 클래스(Abstract Class)

추상 클래스란? : 공통적인 기능을 부모 클래스에로 정의해서 상속받되 일부 공통 기능은 자식 클래스에서 구현하도록 강제하는 것. 추상 클래스의 특징 - 구체적이지 않고 일반화된 클래스 - 객체들 간의 공통적인 기능을 정의한 클래스 - 기능의 구체적인 내용 구현은 자식 클래스에게 일임 - 추상 클래스는 단독으로 인스턴스를 만들 수 없음 - 상속을 통해 자식클래스에서 인스턴스를 생성 추상 클래스 선언하기 - 클래스 선언 부에 abstract 키워드 사용 - 추상 클래스의 멤버 : 필드, 생성자, 메소드 아래는 추상 클래스의 대표적인 예이다. public abstract class Student { private final String name; Student(String name){ this.name = n..

Java 2023.07.10