[CLOVA Summary / JS] 클로바 API로 텍스트 요약하기
·
JavaScript
토이프로젝트로 GPT3.5 API의 text-davinci-003 모델을 이용해서 1시간 가량의 녹음파일을 보고서로 만드는 것을 해보려고 했었는데, 딥러닝에서 텍스트 토큰화를 할 때 한글의 토큰이 영어보다 2.5배 가량 많아져서 (한글의 조사, 어미 때문이라고 함) 저 많은 용량을 하긴 힘들거 같아서 gpt api를 사용하지 않기로 했다. 그래서 간단하게 네이버 클로바에서 제공하는 CLOVA Summary API를 사용해서 텍스트를 요약하는 기능을 구현했다. CLOVA Summary API 완전 무료는 아니고, 1000회 호출까지 무료 (1회 호출에 2000자까지 요약) 테스트하기에는 충분한 횟수이기 때문에 좋은 것 같다. NAVER CLOUD PLATFORM cloud computing services..
[VITO STT API / JS] 음성파일을 텍스트로 변환하기
·
JavaScript
네이버의 클로바 노트의 stt와 요약 기능을 직접 만들어보았다. 음성 파일을 입력받아 요약본을 만들어 주는 간단한 웹사이트를 만들었다. 음성 파일을 텍스트로 변환하고, 변환한 텍스트를 기반으로 요약본을 만들어야 하므로 STT API와 요약 기능을 제공하는 API가 필요하다. 이번 포스트에서는 STT API만 다룰 예정이다. STT API 클로바와, 구글 stt, 그리고 VITO의 음성인식 api가 인식률이 높은 것으로 알고 있다. 나는 VITO api를 사용하기로 했는데, 세 가지 중에 무료 제공량이 가장 많았다. (월 100시간) 인식률도 좋았고, 동시 접속 채널과 화자 분리 등 지원하는 기능도 많았다. VITO Developers 눈으로 보는 통화 VITO developers.vito.ai 위 사이트..
[백준 알고리즘] 1439번: 뒤집기 (JavaScript / JS / 자바스크립트)
·
알고리즘/백준
문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오. 입력 첫째 줄에 문자열 ..
[알고리즘] 그리디 알고리즘 (Greedy Algorithm / 탐욕 알고리즘)
·
알고리즘/개념
그리디 알고리즘 (Greedy Algorithm) 그리디 알고리즘은 "현재 상황에서의 최적해를 선택하는 방식"이다. 백트래킹을 통해 추가적인 점검을 하지 않고, 현재 선택지 이외에는 검증을 하지 않는다. 하지만 그 해가 항상 최적해라는 보장을 할 수 없다는 한계가 존재한다. 위와 같은 최소 가중치 문제에서, 그리디 알고리즘을 적용하면 7과 10중에 7을 선택하고, 12와 15중에 12를 선택하여 7 + 12 = 19의 가중치를 해로 갖게 된다. 그러나 그림을 보면 알 수 있듯이 실제 최소 가중치는 10 -> 5를 선택하는 15이다. 그리디 알고리즘을 적용했을 때, 매 선택마다 부분 최적해는 구했지만, 전체 최적해를 구하지 못한 것이다. 따라서 그리디 알고리즘은 항상 최적해를 보장하지 못한다고 할 수 있다..
[백준 알고리즘] 1920번: 수 찾기 (JavaScript / JS / 자바스크립트)
·
알고리즘/백준
문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입력 5 4 1 5 2 3 5 1 3 7 9 5 예제 출력 1 1 0 0 1 문제 접근 m_arr.forEach(m => { if(n_..
[백준 알고리즘] 11399번: ATM (JavaScript / JS / 자바스크립트)
·
알고리즘/백준
문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다..
[git] 깃허브 잔디 안심어질때 문제 해결 + 누락된 잔디 복구
·
Git
가능한 원인들 1. 잔디는 기본적으로 계정에 연결된 이메일 주소가 일치해야 생긴다. 따라서 커밋을 할 때 사용한 이메일 주소가 GitHub 계정에 등록된 이메일 주소와 일치해야 한다. git config --global user.name git config --global user.email 레퍼지토리에서, 위 두 명령어로 현재 사용되고 있는 이메일과 이름을 확인한다. 그리고 Github -> Setting에 가면 바로 아래와 같은 화면이 보인다. config 명령어로 확인한 것과 일치하는지 확인한다. 일치하지 않는 경우, git config --global user.name "gyujh" git config --global user.name "rbwjrbxo@ajou.ac.kr" 위 명령어로 일치하도록..
[백준 알고리즘] 1158번: 요세푸스 문제 (JavaScript / JS / 자바스크립트)
·
알고리즘/백준
문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) 출력 예제와 같이 요세푸스 순열을 출력한다. 예제 입력 7 3 예제 출력 문제 접근 예제 입출력인 [7,3]..
[백준 자바스크립트] node.js 환경에서 콘솔 입출력
·
알고리즘/백준
js로 백준 문제를 풀려고 봤더니 백준에서는 node.js 환경으로 코드를 제출해야 했다. 여기에 입출력 관련한 코드를 정리할 예정이다. node.js 콘솔 실행방법 터미널 Command 입력 -> node 파일이름.js 입출력 코드 // 1. 한줄, 공백 x, 하나만 입력 // ex) "hello" -> "hello" const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin }); rl.question('', (input) => { void answer(input); rl.close(); }); //답안 작성부분 function answer(input) { console.log(input..
[알고리즘] 그리디 알고리즘 (greedy algorithm)
·
알고리즘/개념
그리디 알고리즘 - 최적화 문제 데이터 간의 관계를 고려하지 않고 수행 과정에서 욕심내서 최소 또는 최댓값을 가진 데이터를 선택한다. (근시안적 선택) 동전 거스름돈 알고리즘 #의사코드 change=W, n500=n100=n50=n10=n1=0 // n500, n100, n50, n10, n1은 각각의 동전 카운트 while ( change ≥ 500 ) change = change-500, n500++ // 500원짜리 동전 수를 1 증가 while ( change ≥ 100 ) change = change-100, n100++ // 100원짜리 동전 수를 1 증가 while ( change ≥ 50 ) change = change-50, n50++ // 50원짜리 동전 수를 1 증가 while ( c..