본문 바로가기

전체 글153

[OpenCV/악보인식] 광학 음악 인식 기반 자동 편곡 시스템 - 1 개요 광학 음악 인식 기반 자동 편곡 시스템은 제가 학부 4학년 때, 친구 한 명(총 2명)과 같이 캡스톤디자인(졸업작품)으로 진행했던 프로젝트입니다. 해당 프로젝트를 하게 된 배경과 프로젝트의 목표에 대해 간단히 설명해보겠습니다. 기본적으로 '편곡'이라 함은 기존 곡의 멜로디를 가지고 음역을 바꾸거나, 악기의 구성을 변경하거나, 새로운 화음을 도입하는 등의 작업으로 음악을 편집하는 것을 의미합니다. 다만 편곡 작업은 진입장벽이 높아, 전공자가 아닌 일반인들이 시도하기에는 어려움이 있습니다. 이러한 배경에 저희 팀은 음악을 입력받아 자동으로 편곡해주는 시스템을 만들고자 하였고 프로젝트에 필요한 지식이나 연구를 조사하였습니다. 하지만 아직 저희의 역량으로 소리를 데이터로 변환하기엔 무리가 있다고 판단하여 .. 2021. 5. 21.
[백준/C,C++] 10993번: 별 찍기 - 18 https://www.acmicpc.net/problem/10993 10993번: 별 찍기 - 18 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 풀이 위 그림처럼 별을 찍으면 되는 문제입니다. 재귀를 이용해 별을 찍는 문제들에서 배열에 값을 저장한 후 찍는 것이 아닌 해당 좌표에 '*' 이 출력돼야 하는지 공백이 출력돼야 하는지 바로 판단하여 출력하는 식으로 함수를 구현하려고 했고, 이번 문제 또한 배열을 쓰지 않는 방법으로 해결하였습니다. 가장 큰 삼각형 단계부터 가장 작은 삼각형 단계까지 재귀 호출합니다. 해당 좌표가 현재 삼각형 단계에서 '*' 로 출력될 자리인지 판단하고 아니라면 다음으로 작은 삼각형 단계로 재귀 호출하는데, 1 크기의 삼각형이 될 때까지 '*'.. 2021. 5. 18.
[백준/C,C++] 2448번: 별 찍기 - 11 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 풀이 위 그림처럼 프렉탈 형태의 별을 찍어야 하는 문제입니다. 처음 해당 문제를 접하고 2가지 해결법이 생각났습니다. 2차원 bool 배열을 만들어 해당 좌표에 '*' 혹은 공백인지 판단하여 저장한 후 배열을 돌며 별을 찍어내는 방법과 좌표가 주어지면 해당 좌표에 찍어야 할 문자를 판단하여 바로 출력하는 방법입니다. 결과적으론 후자의 방법을 택하여 문제를 해결하게 되었습니다. 먼저 제가 생각한 방법은 이렇습니다. 좌표가 주어지고 해당 좌표가 현재 삼.. 2021. 5. 18.
[백준/C,C++] 2206번: 벽 부수고 이동하기 www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 풀이 개인적으로 BFS 기초를 공부하며 가장 어려웠던 문제인데, 관건은 벽을 부수고 도달한 최소 거리, 벽을 부수지 않고 도달한 최소 거리 모두를 기록하는 것입니다. 해당 부분을 다른 분들의 아이디어를 보고 해결하였습니다. bool 변수를 3차원으로 두는 것인데, 마지막에 [y][x][2] 의 3차원 형태로 구현함으로써 벽을 부수고 도달한 최소 거리, 벽을 부수지 않고 도달한 최소 거리.. 2021. 5. 5.