본문 바로가기
반응형

알고리즘 문제 & 프로그래밍/파이썬10

[파이썬] wav파일에 lowpass필터 적용하는 법 사용 목적에 따라 wav 파일의 특정 주파수 폭만 필요한 경우가 많다. 그래서 하는게 전처리 작업(Preprocessing)인데, 오디오 파일을 파이썬으로 Preprocessing하는 방법을 알아보자. Scipy로 wav 파일을 불러서 sampling rate와 wav data를 각각 저장한다. CatinaBand 60.wav 파일을 사용했는데, Sampling rate는 22050, duration은 60초이다. CS 101- Sample Sound Files www2.cs.uic.edu 파형은 위 그림과 같다. 이제 이 wav data를 주파수 영역에서 봐 보도록 하자. numpy의 fft를 이용하여 Fast Fourier Transform을 했다. Sampling rate가 22050이므로, 우측 .. 2021. 5. 1.
일복리, 이자 계산 & 기간 구하기 문제 | 파이썬 datetime 라이브러리 문제 입력 형식은 ‘20200701’과 같은 형식으로 시작일과 종료일을 입력 받아 기간을 계산하고, 그 기간의 일을 기준으로 한 복리 계산을 하시오. 접근 1. 날짜를 문자열로 4글자 / 2글자 / 2글자로 끊고 숫자형태로 변환한다. 2. 파이썬 datetime 라이브러리를 이용하여, 시작일과 종료일 사이의 기간을 구한다. 3. 그 후, 입력 형식인 '20200701'을 보기 좋게 '2020-07-01'로 바꾸어 준다. 4. 원금에 대한 일복리 계산식을 세운다. import datetime start_date = str(input('시작 날짜를 입력하세요(예시:20200701) : ')) end_date = str(input('마지막 날짜를 입력하세요(예시:20200701) : ')) start_mone.. 2020. 7. 1.
복리, 원리합계, 이자 계산 문제(등비수열) | 파이썬 while, for문 문제 회차별 납입금(or 저축액), 기간, 이자율을 입력받고, 모든 기간 경과 후의 원금총액, 이자총액, 원리금을 구해보자. (단, 기간 : 1~30회 제한, 이자율 : 1%~100% 제한) 접근 1. (1+이자율)을 곱한값을 계속 더하면 된다(등비수열). 이 값은 '원리합계'이다. 2. 원금총액 = 회차별 납입금 X 기간 3. 이자총액 = 원리합계 - 원금총액 #복리 프로그램 작성 total = income = int(input('회차별 납입금 : ')) term = int(input('기간(1 2020. 6. 24.
[백준 1110번] 더하기 사이클 문제 | 파이썬 while문 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 한다. 1. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 2. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 1. 26부터 시작한다. 2. 2+6 = 8이다. 새로운 수는 68이다. 3. 6+8 = 14이다. 새로운 수는 84이다. 4. 8+4 = 12이다. 새로운 수는 42이다. 5. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로.. 2020. 6. 20.
[백준 2884번] 알람시계 문제 | 파이썬 if문 문제 원래 시간보다 45분 일찍 표시되는 알람시계 만들기 ex) 10 10 입력 → 9 25 출력 0 30 입력 → 23 45 출력 23 40 입력 → 22 55 출력 처음 아이디어 1. 분이 45보다 크거나 같을 때는 그냥 '분-45' 하면 됨 2. 시가 1보다 크고, 분이 45보다 작을때는 '시-1', '분+15' 하면 됨 3. 이제 나머지는 시가 0이고, 분이 45보다 작을 때이므로, '시=23', '분+15' 하면 됨 input_data = input().split(' ') hour = int(input_data[0]) minute = int(input_data[1]) if minute>=45: print(hour, minute-45) elif hour>=1 and minute 2020. 6. 13.
[프로젝트 오일러] 5번 문제 & 풀이 (1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수) Problem 5 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 처음 아이디어 이 문제는 최소공배수를 구하는 문제이다 숫자 4, 6의 경우, 이 때의 최대공약수(GCD)는 2, 최소공배수(LCM)는 12이고, 4 = GCD * 2, 6 = GCD * 3 에서 LCM = GCD * 2 * 3 = GCD * 2 X GCD * 3 / GCD 이다. 이 때, 추가로 숫자 7과의 최대공배수를 구하려면, 처음부터 다시 최대공약수&최소공배수를 구할 필요 없이, 앞서 구한 최소공배수인 12와 7 사의의 최소공배수를 구하면, 이 값이 4, 6, 7의 최소공배수가 된다. 같은 논리로, 1부터 차례대로 20.. 2020. 5. 30.
반응형